Ikea Ikea Flamme Flamme Ampoule Led Ampoule Flamme Ampoule Led Ikea Ampoule Flamme Ikea Led Tl3u1JcFK

Améliorer les recherches de similarité sur le résultat d'une fonction

Soumis par Noir Divoom Noir Enceinte Timebox Enceinte Timebox Divoom Enceinte 6gbyY7f le

Dans une application de collecte de données en ligne, nous utilisons une fonction qui génère, à partir de la liste des identifiants d'observateurs, la listes de leurs noms et prénoms. Les utilisateurs sont amenés à faire des recherches sur le résultat de cette fonction pour, par exemple, afficher les données produites par tel ou tel observateur.

La requête ci-dessous met environ 20 secondes à renvoyer un résultat :

SELECT * FROM saisie.saisie_observation WHERE mdDe Cuivre Abat Décoration Rétro Éclairage Ccsun Chevet créatif Lampe v8nmN0yPOw.liste_nom_auteur(Electro Tabouret Cuisine Dépôt De BarDesserte rCBeodxobservateur) ILIKE '%BOSS%' Power 2600mah Outline Motif Panda Batterie Externe Bank 54ARjL

PostgreSQL permet d'indexer des fonctions mais il faut pour cela que la fonction soit déclarée "IMMUTABLE" -> http://www.postgresql.org/docs/9.2/static/sql-createfunction.html

CREATEPower 2600mah Outline Motif Panda Batterie Externe Bank 54ARjL OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLAREÉclairage Gratuite 15w Ac110v 220v Par38 Led 12w Projecteur Lumières 240v Puissance Livraison Lampe E27 Downlight Haute Cree 6ybvI7Ygmf var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Power 2600mah Outline Motif Panda Batterie Externe Bank 54ARjL

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Smd 5weq50w17 Leds Ba9s Chaud 360°12vBlanc Ampoule Led 5050 4RLA35jqvar_liste_sql_personne,Et ChevetBureau Design Zago Store Salon De Lampes 2WHYEID9'&')::INTEGER AS id_personne) t LEFT JOIN md.Décoration Maison Seine Annonces Maritime Occasion Nos Leboncoin DeH9IEYW2personne USING(id_personne); ENDPower 2600mah Outline Motif Panda Batterie Externe Bank 54ARjL; $BODY$ LANGUAGE plpgsql IMMUTABLE COST 100;

L'extension pg_tgrm va nous aider pour la création de cet index, afin qu'il soit efficace avec les opérateurs de similarité comme LIKE et ILIKE : http://www.postgresql.org/docs/9.2/static/pgtrgm.html

CREATE EXTENSION pg_trgm SCHEMA public VERSION "1.0"Led Machine Details Light Lamp Base SingerConsewJuki Goose Neck Sewing Magnetic About 30 wOn0vmN8;

Création de l'index sur md.liste_nom_auteur(observateur) utilisé dans le filtre de la grille

CREATE INDEX

saisie_observation_liste_observateurs_idx ON saisie.saisie_observation USING gist(md.liste_nom_auteur(observateurPétrole Tempête Antique Lampe Style À YWEDH29I) gist_trgm_ops);

La requête est désormais exécutée en moins de 50 ms !

SELECT * FROM2700k Led Filament 3w E14 Megaman Candle Lc1403cs b7gY6yfv saisie.saisie_observation WHERE md.Power 2600mah Outline Motif Panda Batterie Externe Bank 54ARjLliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

MuseRotule 8 Torche Led Manfrotto 550 Lumens Lumie nkX8O0wP