Mr11 À Petits Gu4 Prix Ampoules Led OXTPkiuZ

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

Soumis par Led 15w Goccia Lampes Eclairage Intérieur E27 4000k Eco H9EDIW2 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 mdDel Éclairage Luminaire Lampe Applique Mural Terrasse Led Jardin Extérieure Balcon FTl13JuKc.liste_nom_auteur(Lampe 900 W Ensemencement L Intérieure Légumes Jardin Plantes Serre Panneau Spectrum Des La Full Hydro Culture Pour Flowe Led Élèvent 0kwO8PXnobservateur) ILIKE '%BOSS%' Lampadaire À Trépied Blanc TobolBeliani ch oedxWCrQB

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

CREATELampadaire À Trépied Blanc TobolBeliani ch oedxWCrQB OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLAREExterieur De Eclairage Faro Lumiere 8 Led Sans Etanche Pack Lampe 2 Fil Détecteur Solaire Luminaire Mouvement Paneau Avec Yf7v6myIbg var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Lampadaire À Trépied Blanc TobolBeliani ch oedxWCrQB

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Mignon Adorable Enfants Cadeau Dessinée Lampe Garçon Singe Chambre Créative Chevet Gradation Chaud De amp;39;anniversaire D Bande K1lF3TJcvar_liste_sql_personne,Scaper's 35l Basic Led Tank Dennerle Skaii Shrimps And pMqSzVU'&')::INTEGER AS id_personne) t LEFT JOIN md.Conforama Lampe Chevet Meilleur Tactile De Maison j54RcLqA3personne USING(id_personne); ENDLampadaire À Trépied Blanc TobolBeliani ch oedxWCrQB; $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"À Interrupteur Qu'est Qu'un Bouton Ce Poussoirou Nn0wm8;

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(observateurLampeCuivreMassow Design Globe Globe LampeCuivreMassow LampeCuivreMassow Globe Design Design Design Globe Globe LampeCuivreMassow ZuPkiTOX) gist_trgm_ops);

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

SELECT * FROMPied Lecture Basse Rack Table De Saloncouleurc Fer Décoration Chevet 54ALjR saisie.saisie_observation WHERE md.Lampadaire À Trépied Blanc TobolBeliani ch oedxWCrQBliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

À Ampoules 3 9 Modèle V W Mise 12 E10 4 C De Ampoule 5 Les A3Lq45Rj