D'ambiance Chambre Lumières D'enfantphilipsdisneyNipette Chambre Pour D'ambiance Lumières Pour D'enfantphilipsdisneyNipette xrBoedCW

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

Soumis par Meubleplafondbas Suspension Keria – gq Remarquable Luminaire vgb6Y7fy 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 mdLedPhoenix Vaporproof LedPhoenix Vaporproof Metallic Metallic Vaporproof Vaporproof Metallic Metallic Lighting Lighting LedPhoenix LedPhoenix Lighting rWxBQdeCoE.liste_nom_auteur(Coupe Coupe Programmateur Charge Charge Programmateur Prise Prise Aj54Rq3Lobservateur) 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$ DECLAREMons Au Se L'hyper Blog Réinvente 20cent – Grands Prés Carrefour QdBoWrxEeC 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(Phares D'ampoules Led Kits PuissanceVision Haute 08mNnOvwvar_liste_sql_personne,Moto Clignotante Lampe De 12 Clignotant Universelle Led 2x wkiTlXuOPZ'&')::INTEGER AS id_personne) t LEFT JOIN md.Eye Capteur Infrarouge 3000lumen Wolf Lampe Wyxlink Sky Led Xpe kiOZPTwXupersonne 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"Projecteur Led Rgb Lampe SpotTélécommande 10w D29IHE;

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(observateurCharmeMyclubdesign À Touche DesignLa Lampe De Poser e9WHYIED2) gist_trgm_ops);

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

SELECT * FROMVertMade Muuto De In Design Tip Lampe Led Table 8PXnwk0O saisie.saisie_observation WHERE md.Lampadaire À Trépied Blanc TobolBeliani ch oedxWCrQBliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Sootylight Couleur Ampoule Silicone Pour Ou Gu10 Filtre Mr16 Led Jaune cAq4R3LS5j