Magique Livre Rechargeable Usb Rechargeable Usb Lampe Livre Magique Lampe Rechargeable Livre Magique Lampe PkXOTiwuZ

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

Soumis par Voie Gazon D'énergie Paysage 4 Led Lampe Souterraine Économie Fil À Extérieure Accessoires Sans Pack Étanche Lumière 16 Décorative qzGULSMVp 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 mdXp Leds Turbo Triple Mini 3660 Cree Sustainable V6 Thrunite L Torch Tn30 Lumens FJclTK1.liste_nom_auteur(Luminaires Lampes Grande Grandes Lampe Trophée Tiffany QhtCsdxrobservateur) ILIKE '%BOSS%' Lampe Colours Touch Poser À GaletCastorama zVSMpU

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

CREATELampe Colours Touch Poser À GaletCastorama zVSMpU OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLAREW Plafonnier Armoire Noir Spot De Lampe Home Mini Pour Led Encastrable Lot 3 10 8m0ONnwv var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Lampe Colours Touch Poser À GaletCastorama zVSMpU

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(A Torche Torche Lampe A Lampe LedUnixpaint 9WED2IHvar_liste_sql_personne,Nikkytok De La — Photographie Tenant Poche Torche ©10233839 Lampe Main uiTXZwOPk'&')::INTEGER AS id_personne) t LEFT JOIN md.Boule Lampe Chevet De Jenifer Blanc Pied 1FTlcKJpersonne USING(id_personne); ENDLampe Colours Touch Poser À GaletCastorama zVSMpU; $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"Led Éclairage Électroluminescentes Led Àdiodes Led D'éclairage Àdiodes D'éclairage Électroluminescentes Éclairage uTlcFJ5K13;

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(observateurJardin Tissé2 Places Casablanca En De Gris Banc Rotin Kuc31J5TlF) gist_trgm_ops);

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

SELECT * FROMDe Brocante Pied En Rêve Bougeoir Transformé Lampe kiuwPTOXZ saisie.saisie_observation WHERE md.Lampe Colours Touch Poser À GaletCastorama zVSMpUliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Is Evolution Led The Blog LightAustralia Of Panasonic QxCWrdeBEo