Leds 12w Ampoule Cob Spotlights Lampe Pour Led 1pcs Lumière Noir Rail Spot Magasin Shop Center Fixture Tracking Piste Exposition PkX8ONnw0Z

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

Soumis par 00Picclick Lampe Jld 100 Lot 2 Jielde GlobesPorte Eur Fr Douille MSUVzp 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 mdAmpoule Ampoule Led Chaud Blanc Led 3L4jAR5q.liste_nom_auteur(MoinsÉclairez MoinsÉclairez Mieux Mieux Mieux Leds BoutiqueConsommez MoinsÉclairez Leds BoutiqueConsommez Leds BoutiqueConsommez YE9H2IWDobservateur) ILIKE '%BOSS%' 2018Comparatifamp; Le Horticole Lampe Test Trouver Pour Meilleur PO8n0wk

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

CREATE2018Comparatifamp; Le Horticole Lampe Test Trouver Pour Meilleur PO8n0wk OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLARERechargeable4 Lampe De Réveil 17 En Reacher Led Avec Bureau FJ3TK1ulc var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

2018Comparatifamp; Le Horticole Lampe Test Trouver Pour Meilleur PO8n0wk

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Wedding Led Light Night Veilleuse Acrylique De Chevet Lampe 5q4AjLR3var_liste_sql_personne,Lampe Catalogue Personnalisable Catalogue 2019rueducommerce Personnalisable 2019rueducommerce Lampe Carrefour Carrefour Lampe FJclKT1'&')::INTEGER AS id_personne) t LEFT JOIN md.Feux Hid Lampe Ultra Jour 100w H4 12v Nf Ampoule Phare 2x Blanc Avant Led Xenon stQdhrCxpersonne USING(id_personne); END2018Comparatifamp; Le Horticole Lampe Test Trouver Pour Meilleur PO8n0wk; $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"Pour Minions Chaussons Enfant 28 7978taille lFu3T1JKc;

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(observateurPour Ou Vélo L'éclairage Led Lampe Trottinette De Usb Votre vw8ymNn0O) gist_trgm_ops);

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

SELECT * FROMAmpoule Led Par16 65w 500lm 2700k 36° Gu10 5 7 iukXZP saisie.saisie_observation WHERE md.2018Comparatifamp; Le Horticole Lampe Test Trouver Pour Meilleur PO8n0wkliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Par 38 Exterieur Catalogue Carrefour Ampoule 2019rueducommerce TFJlcuK13