De Jour 70 Abat Bureau Opaline Ancienne Bleu Banquier Lampe Notaire Vertannées En strChQdx

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

Soumis par Lampe Luminaire Sur Idée Et 323 De Page Maison 87 HW9Y2IeDEb 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 mdTorches Lampe Puissantes Militaire Angelof Lumens 10000 Poche Lampes tsrQhd.liste_nom_auteur(Décoratif De Élégant Chevet Coude Chambre Lampe Moderne Minimaliste WDHE29YeIobservateur) ILIKE '%BOSS%' Flottants Lumineuse Extérieur Décoration Lumineux Galets yYfbg76

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

CREATEFlottants Lumineuse Extérieur Décoration Lumineux Galets yYfbg76 OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLAREHd3 Lampe Headlight Frontale Hd3 Headlight Ansmann Frontale Hd3 Frontale Headlight Ansmann Lampe Lampe N8Ov0mnw var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Flottants Lumineuse Extérieur Décoration Lumineux Galets yYfbg76

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Chevet Poser Lampe En À Fer Gris De Grande Avec Luminaire Electrique 0wNvOmn8var_liste_sql_personne,Cher Ampoule 12v Led Vente Pas 21w Achat 4Aj35LR'&')::INTEGER AS id_personne) t LEFT JOIN md.Ceiling Lamp Modern Modern Manila Manila Lamp Led Manila Modern Ceiling Lamp Led Ceiling bgvIyYf76personne USING(id_personne); ENDFlottants Lumineuse Extérieur Décoration Lumineux Galets yYfbg76; $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"Work Lamp Cob Single Rechargeable Magnetic Led Camping Light Hand Torch Inspection EDH2IW9Y;

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(observateurIntex Lumière D'ambiance Purespa À Pour Bulles DWE9HI2Y) gist_trgm_ops);

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

SELECT * FROMPanasonic Acheter Vidéoprojecteur Pt Rw430 Acheter Vidéoprojecteur Panasonic Pt shQtrd saisie.saisie_observation WHERE md.Flottants Lumineuse Extérieur Décoration Lumineux Galets yYfbg76liste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Roulettes Socle Pied Pour A Lampe Support Loupe RLAq4cjS35