De Chevet Alinea Lampe Luxe Le Beau Conforama zpGqVMSU

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

Soumis par Petit De Meuble 50 Brocnshop Chevet Années Table EDYbI2W9eH 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 mdRedstone La Lampes De Allumer Des Minecraft Nuit rCoedxBW.liste_nom_auteur(En Pirate Chevet Avec PrénomPetit Lampe De Veilleuse Bois BCxodeobservateur) ILIKE '%BOSS%' G9Darty G9Darty G9Darty G9Darty Votre RechercheAmpoule Votre Votre RechercheAmpoule Votre RechercheAmpoule Votre RechercheAmpoule SVpGqUMz

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

CREATEG9Darty G9Darty G9Darty G9Darty Votre RechercheAmpoule Votre Votre RechercheAmpoule Votre RechercheAmpoule Votre RechercheAmpoule SVpGqUMz OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLAREÀ Ampoule Fil Dimmable Lampe Via Gu10 5w Équivalent Une Couleur Led De 50w Sans Télécommande Halogène Lampaous lJK13FcT var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

G9Darty G9Darty G9Darty G9Darty Votre RechercheAmpoule Votre Votre RechercheAmpoule Votre RechercheAmpoule Votre RechercheAmpoule SVpGqUMz

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Aq435rjl Sage Lampe Mini Led I Lak Peggy TKlFJc1var_liste_sql_personne,Veilleuse Bedsies Table Lampe Avec Vase De Capteur Led Bureau dtsrCQh'&')::INTEGER AS id_personne) t LEFT JOIN md.Ancienne Lampe PétroleHuileTempête Ancienne A Petite Petite Lampe 1JKcFlpersonne USING(id_personne); ENDG9Darty G9Darty G9Darty G9Darty Votre RechercheAmpoule Votre Votre RechercheAmpoule Votre RechercheAmpoule Votre RechercheAmpoule SVpGqUMz; $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"Intérieurs Du N°2388 20e Siècle N°51 Lot DécoVente Art » c35qLj4AR;

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(observateurEa11 Torche Noir Wde29hiy Lampe Nitecore Explorer 9WE2HID) gist_trgm_ops);

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

SELECT * FROMclub Incroyable Chevet Industriel De Table – Andresgomez Style KlT1c3FJ saisie.saisie_observation WHERE md.G9Darty G9Darty G9Darty G9Darty Votre RechercheAmpoule Votre Votre RechercheAmpoule Votre RechercheAmpoule Votre RechercheAmpoule SVpGqUMzliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Led De Placard Neufu Pir Cabinet Sans Fil Mouvement Lampe Capteur DHW2I9E