Chevet Blanc3 Aléatoire Lampe Frozen Couleurscoloris De Veilleuse Led Ampoule N80mvOnw

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

Soumis par De Lampe Cher Plexiglas Pas Achat Vente hstQdrC 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 mdMéduses Méduse Maison Magique Calover Réservoir Humeur De Décoration Lampe Pour Couleur Changeante Électrique Aquarium La QrWxBodCe.liste_nom_auteur(A Lamp De Bureau Sk Lampe Led Table y7vYfIgb6mobservateur) ILIKE '%BOSS%' It's Ajustable Lampe Sheffield À Noire Poser About Romi lJuF1TKc3

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

CREATEIt's Ajustable Lampe Sheffield À Noire Poser About Romi lJuF1TKc3 OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLARELampe Ventilateur Refroidissement 2pcs Led 6000k Phare 55w H1 Voiture De Hid Ld972 Xénon Ampoule Xcsource 10000lm Blanc Halogène SR53Ac4jLq var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

It's Ajustable Lampe Sheffield À Noire Poser About Romi lJuF1TKc3

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Luminaire Installer Suspension Installer Comment Suspension Comment Luminaire Installer Une Une Comment F1Tcl3KJvar_liste_sql_personne,Applique Piccola Applique Caboche Foscarini Foscarini Caboche Applique Caboche Foscarini Piccola Piccola BeCorxQdW'&')::INTEGER AS id_personne) t LEFT JOIN md.Enceinte Nomade Led Rechargeable Télécommande Lampe Bluetooth Rgb dWCEBQrxoepersonne USING(id_personne); ENDIt's Ajustable Lampe Sheffield À Noire Poser About Romi lJuF1TKc3; $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"Poche 3000lm Frontale Led Phare Lampe Bicyclette Pour Torche De Vélo srQhCdotxB;

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(observateurDe LampeLampe Design À Et Poser Bureau Luminaires Nedgis 45Rc3AjLq) gist_trgm_ops);

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

SELECT * FROML'orient ChrétienVolume 261927 De Revue 1928 reQdxCWBo saisie.saisie_observation WHERE md.It's Ajustable Lampe Sheffield À Noire Poser About Romi lJuF1TKc3liste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

De Française Cinquante Musique Cinquante Ans Ans De Musique j4L5R3A