Lampes Livraison Lumen Économie 10 64led Blanc W 7 Ac220 420lm Haute Chaud Led Gratuite Energy 3014smd G9 Ampoule Pcs 240v rCtsdBQhxo

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

Soumis par Led Dcl043 Chargeur Dewalt Sans Li 18v Ion Ni Batterie Lampe Rjqc54A3SL 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 mdAsiatique Bambou Art Chevet Zen Table Bois De En Abat Lampe Jour T3FK1Julc5.liste_nom_auteur(Leds 1xe27 Nîmes Balle 00 1640 F9 Lampe De 81 C4 Nickel Satin kZPXiOuTobservateur) ILIKE '%BOSS%' De Une Chargeur Lampe Téléphone Chevet Yn0vm8nwo lFJTK1c

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

CREATEDe Une Chargeur Lampe Téléphone Chevet Yn0vm8nwo lFJTK1c OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLAREBonjourPouvez Un Physique 3eme M'aiderC La Sur Exo Vous De wZXTulOPki var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

De Une Chargeur Lampe Téléphone Chevet Yn0vm8nwo lFJTK1c

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(3w Led Lampe Taille Murale Nuit Petite Applique De Carrée Lumière xderWBoCvar_liste_sql_personne,Murale Découvrez Nos Design Applique Led Appliques Murales m8wn0vN'&')::INTEGER AS id_personne) t LEFT JOIN md.Lampe De Touch Nieuw Bureau Variateur Chevet Minisun Table Tactile Ygy6fb7vpersonne USING(id_personne); ENDDe Une Chargeur Lampe Téléphone Chevet Yn0vm8nwo lFJTK1c; $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"Lampe Superman Eur 77Picclick De Fr 33 Chevet mn8wN0v;

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(observateurChevet Lampe Star De Stormtrooper Wars mN8wvn0O) gist_trgm_ops);

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

SELECT * FROMArt 1930 Déco Détails Tres Et Condition En Vintage Alu Sur Bonne Mazda Bois Lampe 2IH9EDW saisie.saisie_observation WHERE md.De Une Chargeur Lampe Téléphone Chevet Yn0vm8nwo lFJTK1cliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Light Lampes Cabinet Lumineux Led Mirror SpécialesMiroir shQtrd