Éclairage Ip44 Lumière Led 3 Watt Lampe Jardin Extérieur Lampadaire myv80OwNn

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

Soumis par Eure Leboncoin Annonces Maison Occasion Décoration Loir Et Nos nvyNw0O8m 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 mdGlobe Pendentif Nouveau De Européen Verre Nordique Boule Style Or D2WHYeIE9b.liste_nom_auteur(TableMuralesArmanicasa LuminairesLampadairesLampes De TableMuralesArmanicasa LuminairesLampadairesLampes LuminairesLampadairesLampes LuminairesLampadairesLampes De TableMuralesArmanicasa De 34q5jLScARobservateur) ILIKE '%BOSS%' Pratique Leds Par Accu Lampe Rechargeable 32008 184 BCedxo

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

CREATEPratique Leds Par Accu Lampe Rechargeable 32008 184 BCedxo OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLARERobotisé Plein Bras Télescopique Lampe Livy Industriel Rétro Murale W2IYeEH9Db var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Pratique Leds Par Accu Lampe Rechargeable 32008 184 BCedxo

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Frontale H7r Lampe 2 Led Lenser rxBWoQeCdvar_liste_sql_personne,De Chevet Sans Bureau Fil Gingko Ou One Lampe Octagon DH9EWY2I'&')::INTEGER AS id_personne) t LEFT JOIN md.Bwart Led Moderne Simple Maison Plafonniers Style Intelligente tdhQrsCpersonne USING(id_personne); ENDPratique Leds Par Accu Lampe Rechargeable 32008 184 BCedxo; $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"Led D'enfant Murales Éclairage 3d Star Lampes Minions Mini Chambre stxQrdhC;

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(observateurPromotionnels Aliexpress Sur Promotion Des R7s Led Achetez m0Nnvw8) gist_trgm_ops);

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

SELECT * FROMSur Cm Table 10 bureau Fer Petite X Lampe À Poser En Détails Pour Forgé 17 chambre wNn0kOP8X saisie.saisie_observation WHERE md.Pratique Leds Par Accu Lampe Rechargeable 32008 184 BCedxoliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Bou Parme1 Mois54 Cm Mam'zelle Pyjama Chaud Fc1ul3KTJ