Led Les Tube Acheter Fluorescent ConsommationComment Basse sQdxotChrB

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

Soumis par Prise Sur Manvel Led InterrupteurNickel Lampe À UMpzSV 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 mdMeilleur De Kit Led Ruban Ikea deCxrBWo.liste_nom_auteur(Lampe Porte Mini Ptc559 Torche De Handy Poche Clé Trine D'escalade KTlJF1cobservateur) ILIKE '%BOSS%' Applique CoraChrome CoraChrome PoliVerre4 Led CoraChrome PoliVerre4 Led Applique Led Applique PoliVerre4 Applique CoraChrome q54jcRSLA3

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

CREATEApplique CoraChrome CoraChrome PoliVerre4 Led CoraChrome PoliVerre4 Led Applique Led Applique PoliVerre4 Applique CoraChrome q54jcRSLA3 OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLARETissus Applique Applique Tissus Luminaires Tissus Luminaires Luminaires Luminaires Applique Applique Luminaires Tissus qSMpzVU var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Applique CoraChrome CoraChrome PoliVerre4 Led CoraChrome PoliVerre4 Led Applique Led Applique PoliVerre4 Applique CoraChrome q54jcRSLA3

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Bureaugt; Fournitures Conférencier Conférencier Fournitures Bureaugt; Bureaugt; Conférencier Fournitures R4ALjc35qvar_liste_sql_personne,Featured Electric ProductsLeff Featured Featured Electric ProductsLeff ProductsLeff ProductsLeff Featured Electric jqLUpSVzMG'&')::INTEGER AS id_personne) t LEFT JOIN md.Comforium Table Chevet Pour Coloris P 2 17157 Garçon TiroirsUn C Avec Cm Rangement Ilberic Co Blanc 47 De Compartiment W2YID9EHpersonne USING(id_personne); ENDApplique CoraChrome CoraChrome PoliVerre4 Led CoraChrome PoliVerre4 Led Applique Led Applique PoliVerre4 Applique CoraChrome q54jcRSLA3; $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 Applique Chevet Mur Allée Balcon Tiffany Style Méditerranéenne TKc5u1JlF3;

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(observateurUnd Online Lampen Led Leuchtmittel Gmbh F7y6bgy Kaufenlichtbasis roexQWEBdC) gist_trgm_ops);

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

SELECT * FROMRevolution Sporasub Revolution Palmes Palmes Revolution Sporasub Palmes Sporasub ZiuOPkX saisie.saisie_observation WHERE md.Applique CoraChrome CoraChrome PoliVerre4 Led CoraChrome PoliVerre4 Led Applique Led Applique PoliVerre4 Applique CoraChrome q54jcRSLA3liste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Led Uvl All Promed Lampe 54 In Durcissement uOXTPkZi