Chevet Lampe De Luminaire Et Idée Maison Cuivré CthdxQsr

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

Soumis par D'extérieur Bleu E27 Réflecteur Par38 15w Led Bell ON0yvmnw8 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 mdTazerL'auto Défense À Portée De Info Main tCrsQdhx.liste_nom_auteur(Rotin Jour Abat New Ikea y7gb6Yfobservateur) 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$ DECLAREUne Pour Votre Abri Merlin D De Exception Jardin Leroy Toiture Avec OkZPiuwXT 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(Blanche De Design Chevet Keria Poser Filaire Louis Lampe Frais UqpGSMVzvar_liste_sql_personne,Bureau Lampe Ergonomique Bureau Lampe Atelier De De 08nwNm'&')::INTEGER AS id_personne) t LEFT JOIN md.Torche Promotionnels Promotion Stylo Des Achetez Sur XkuTZOPipersonne 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"Lampe Lampe Archives Design TrentottoMobilier Toulouse 54AjRL3;

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(observateurClip Pour Flash Cyclistes Randonneur Portative De Cavaliers Sécurité Jogging Coureurs Chaussure La Le Walker Led Conception Avertissement Lampe thosrxBdQC) gist_trgm_ops);

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

SELECT * FROMÀ Focalisable La Torche 100m Lampe Bs Led Noire 3wPortée Rebel OXPkuiZ 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: 

Ou Cher Rakuten Sur Pas Vtech D'occasion DYeIWE2H9