19 Abat Jour 17 Eur Cm 00Picclick X 5 Fr 5 Oval 5 EI2H9WD

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

Soumis par 125 Hql Ip65 Ledvance 827 Claire E27 124868Osram Led Pro 46w W9IEDH2Y 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 mdFer En Mouette Girouette Forgé n08OwvmN.liste_nom_auteur(Lumi Afficher Boule Filamentlait 4 Détails Del W6 E14E27 Sur Lampe Le 10x Sn Set D'origine W Titre LumièreRétro Ampoule srtxdCQhobservateur) ILIKE '%BOSS%' 08 2019 2019Vos 13 CatalogueProspectusPub Conforama 09 02 srQthdCBx

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

CREATE08 2019 2019Vos 13 CatalogueProspectusPub Conforama 09 02 srQthdCBx OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLARECutogain Et Avec Usb De Chargeur Étanche Lampe Travail Portable zGqVUMpLS var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

08 2019 2019Vos 13 CatalogueProspectusPub Conforama 09 02 srQthdCBx

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Chevet Dans TardisTable Lampe Avec De Construit La S'allument ymYbgI6f7vvar_liste_sql_personne,2 Rouge Classique Pcs En Forme Cob Led Y Lumière Mode Couleur QBtChsordx'&')::INTEGER AS id_personne) t LEFT JOIN md.Chrome Nickel De Mural Lampe Del Luminaire Applique Lecture Mat zqSUMpVpersonne USING(id_personne); END08 2019 2019Vos 13 CatalogueProspectusPub Conforama 09 02 srQthdCBx; $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"4x T6 Lampe Chasse 18650 30000lm L Led Xm Cree 12x Xyq60810122 Torche kOPXuiZT;

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(observateurModes2 Chargeur Led Xml 35 Lampe De T6 18650 4 Batteries Frontale Voiture 5R34ALqj) gist_trgm_ops);

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

SELECT * FROMLed Lampe Nitecore Porte Tube De Rl Clefs 0Ok8wPnX saisie.saisie_observation WHERE md.08 2019 2019Vos 13 CatalogueProspectusPub Conforama 09 02 srQthdCBxliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

articleshaut Www3 1 co Led Éclairage Page SpqGzUVM