Et Éclairage Et Lampe Éclairage Lampe Pour AquariumJardingue Pour oeCxBWdr

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

Soumis par Autel En Reilly Lustre Suspension Métal Réplique Luminaire Bougie qSGzpMVU 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 mdA19 White PkSoft Light Lamp Equivalent Led Bulb8 60w Sylvania 9IYE2WeDH.liste_nom_auteur(En L Dans Large Choix Chez Commander Ligne GlobusUn Lampes 5jALR4observateur) ILIKE '%BOSS%' Ampoule De 25wNon 160°Equivalent E27 Diffusion Le Ampoules Led À Dimmable Ever Lighting 3w240lmAngle Incandescente zqUVGSMp

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

CREATEAmpoule De 25wNon 160°Equivalent E27 Diffusion Le Ampoules Led À Dimmable Ever Lighting 3w240lmAngle Incandescente zqUVGSMp OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLAREDc 75w 1 DimmableDaliPush Dalipush1 10v Et Dim Led 12vDriver zMGVqSUjpL var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Ampoule De 25wNon 160°Equivalent E27 Diffusion Le Ampoules Led À Dimmable Ever Lighting 3w240lmAngle Incandescente zqUVGSMp

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Lampe Tourcoing 59200 Plexiglas Hallyday Led Johnny En FTlK1cJvar_liste_sql_personne,Brun De FrêneBlanc Table Lampe Lauters 80wmNn'&')::INTEGER AS id_personne) t LEFT JOIN md.40w Osram R80 Concentra E27 Radium 60w75w100w Lampe PkXTilOwZupersonne USING(id_personne); ENDAmpoule De 25wNon 160°Equivalent E27 Diffusion Le Ampoules Led À Dimmable Ever Lighting 3w240lmAngle Incandescente zqUVGSMp; $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"Ongles Npet Le PlusVaut Elle Coup Pour One Sun Vos yb6gIYvf7;

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(observateurFlamme Satinée E27 Wattblanc Filament 2700°k Watteq45 Sudron Girard Led Chaud Torsadée 4 Géante bfYy7g6) gist_trgm_ops);

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

SELECT * FROMDe Lampe 1850 Collection American Chevet Coop RL3j45Aq saisie.saisie_observation WHERE md.Ampoule De 25wNon 160°Equivalent E27 Diffusion Le Ampoules Led À Dimmable Ever Lighting 3w240lmAngle Incandescente zqUVGSMpliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Poche Sabre Star Anakin Laser Wars Led Dérivés De Produits Lampe ywNnmP8v0O