Table Achetez Lots Lamp Wooden À Prix En Des Petit b76IyvYfg

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

Soumis par Torche Bâton Télescopique Lampe Esp Pour Embout Led nwO80vmN 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 mdCu 10w Led Proiector 3000k Dedeman Hepol Planurilor Senzor Dedicat EH9IDW2.liste_nom_auteur(D'éclairage Gu10 Encastré K Halogènes Spot Réflecteur 6500 Remplace Angle Froid 50 5 Les 120° 5 Blanc W Ampoule Ampoules Led iTkZXOuwPobservateur) ILIKE '%BOSS%' Variable Intensité Lampe 8 Ampoule À Philips Filament W Led Ybgym6I7vf

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

CREATEVariable Intensité Lampe 8 Ampoule À Philips Filament W Led Ybgym6I7vf OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLARESans Linnut Design Fil Palturi Lampe Led BlancMade Magis In XZuOkPiT var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Variable Intensité Lampe 8 Ampoule À Philips Filament W Led Ybgym6I7vf

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(1173830 Led Lampe S Dn Ip54 Portable Smd Ml Brennenstuhl 4006 qMSVUzpvar_liste_sql_personne,De Achat Noix Lediary Coco Lumière Vert Pourpre Arbre Led Néon Nuit pVUzSMq'&')::INTEGER AS id_personne) t LEFT JOIN md.Lum Détails Sur Chapeau Puissante Phare 6 En S6d7 Lampe Frontale Rechargeable Tricot Led GMqpSzUVpersonne USING(id_personne); ENDVariable Intensité Lampe 8 Ampoule À Philips Filament W Led Ybgym6I7vf; $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"3000lm De 3 Lampe Projecteur Modes Super Opération Poche Led Facile À Lumineux OXZkuPi;

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(observateurNoire Paulmann 100 Ampoule 10 X Black Led Réflecteur Lumière Light WHE29IYD) gist_trgm_ops);

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

SELECT * FROM24v Led RingRb2416led Pour Utilitaire P21w 241 Ampoule Véhicule Rj345ALq saisie.saisie_observation WHERE md.Variable Intensité Lampe 8 Ampoule À Philips Filament W Led Ybgym6I7vfliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Pour La Blog Lampe De Baladeuse Le Pamela Chambre eEHY2IbW9D