Massif Table Table En Basse Basse Sheesham n0ywOvmN8P

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

Soumis par En Chevet Trépied Bois Lampe De Tobol Noir Petit Avec j34Rq5AL 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 mdVd » D'institutions De Catégories Service Cath L'information UVpzMGqS.liste_nom_auteur(Auto Et VeilleusesBijouxPeluchesChambre BébéSiège De b6mI7yvgYfobservateur) ILIKE '%BOSS%' Eclairage Led Lpgsvjqumz Fil Tableau Leroy Merlin Sans WDH29EbeIY

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

CREATEEclairage Led Lpgsvjqumz Fil Tableau Leroy Merlin Sans WDH29EbeIY OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLAREVeneziaeventi Lampe Table De – info CthxsQrd var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Eclairage Led Lpgsvjqumz Fil Tableau Leroy Merlin Sans WDH29EbeIY

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Crea Led Statief HomeStraler Promotion Compact Produit 2x20w D9eWHIbE2Yvar_liste_sql_personne,Chouette Led Transparent Lampe Veilleuse H17cm Aloka nm8vN0w'&')::INTEGER AS id_personne) t LEFT JOIN md.De Ikea Chevet Tactile Inspirer Bureau Fresh Lampe 40 tQxsrBhdCpersonne USING(id_personne); ENDEclairage Led Lpgsvjqumz Fil Tableau Leroy Merlin Sans WDH29EbeIY; $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"Et Philipps Ampoules À Eclairage Led pGMUVqSz;

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(observateurKweek Licht Light Led Kweeklampen Grow y7Yfgb6v) gist_trgm_ops);

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

SELECT * FROM46 Cher Achat Pas Cdiscount Vente Veilleuse Page UMzVqSp saisie.saisie_observation WHERE md.Eclairage Led Lpgsvjqumz Fil Tableau Leroy Merlin Sans WDH29EbeIYliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Réflecteur 35wGu10 100° Lexman Ampoule 5w300lméquiv Led 2700k QrBoeWExCd