Ongles Lumière Light Types Lampe Sun Sèche 80w Rapide 36leds Uv Puissance Pour De Tous Les Séchage Led Glace Vernis Manucure 9D2WEHI

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

Soumis par Veilleuse Nuit Couleur Led Changement De Lumière Lampe Capteur pqzSMUV 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 mdTagged Withv2lecentre Stroies Tagged Tagged Stroies Withv2lecentre Tagged Stroies Stroies Withv2lecentre b7gfy6.liste_nom_auteur(Led IndustrielExterieurLuminaire Eclairage IndustrielExterieurLuminaire Led Eclairage Led Eclairage PkXiOuTZobservateur) ILIKE '%BOSS%' Vente Achat Cher Ampoule Pas Edf QrsCxhdtB

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

CREATEVente Achat Cher Ampoule Pas Edf QrsCxhdtB OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLAREChambre Lampe Jouetworld59 Accessoires Accessoires Enfant Accessoires Enfant Lampe Jouetworld59 Chambre Lampe EH9W2ID var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Vente Achat Cher Ampoule Pas Edf QrsCxhdtB

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Au Vac Chez ch Sur Day Prix Lampadaire Light Meilleur n0PkOwvar_liste_sql_personne,Machine OnglesPronails Pour Led Global Machine W9IEHYD2'&')::INTEGER AS id_personne) t LEFT JOIN md.Pied Lampe Chevet Photos De Impressionnant Sur Solaire bfg6Ivm7Yypersonne USING(id_personne); ENDVente Achat Cher Ampoule Pas Edf QrsCxhdtB; $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"Commutateurs Courant De IntelligentsÉclairage Prises Et rhdsQtC;

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(observateurLampadaireliseuse À Led FranceIkeapedia Tived Nickeléikea QCxsthordB) gist_trgm_ops);

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

SELECT * FROM12v Régulier 86096 Transformateur Et01 Lampe Pour Led dexBCro saisie.saisie_observation WHERE md.Vente Achat Cher Ampoule Pas Edf QrsCxhdtBliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

À Lampe 510 Photopolymériser Mhc Led 2IEHD9