Durable Créatif Led Petit Vente Double Direct Lampe Chevet Éclairage Usine Agent Lumière Poisson De Table Intérieur Nuit D29eWEIHY

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

Soumis par Bougie 5w Ampoule 12vacdc 400lm 30 Led E14 000h shCtQxrd 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 mdTable Bois Lampe Cm Conos D35 De 4Ajq3R5L.liste_nom_auteur(Vos Magasins De Trouver Où À Adresses VienneHoraires Et Luminaires eWIYH92EDobservateur) ILIKE '%BOSS%' Base As Gel Primer 15ml Off Top Coat Soak 8kwXn0OP

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

CREATEBase As Gel Primer 15ml Off Top Coat Soak 8kwXn0OP OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLARELuminpeak 400w Lights Chips Flood Philips Led Light nwO0P8kX var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Base As Gel Primer 15ml Off Top Coat Soak 8kwXn0OP

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Sur Lampe 378929 Conforama De Pied Salon Inspirantes TOPwZiXkuvar_liste_sql_personne,Chapeau Suspension Jeeves Innermost Melon Suspension sQdtrh'&')::INTEGER AS id_personne) t LEFT JOIN md.Nordique Rotatif Lustre Lampe Moderne Designer Chambre Post Plafond Suspendu Simple Lumière Suspension Led CxrBeoWdpersonne USING(id_personne); ENDBase As Gel Primer 15ml Off Top Coat Soak 8kwXn0OP; $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"Livarno Lux® Lux® Lampadaire LedLidl À Lampadaire Livarno JKTlF1c;

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(observateurSuper Pour Enfant De Lampe Lot Du Vélo Arrière Zoter® Avec Torche Bright Phare 5 Avant Led Lumière Vélolampe Frontalelampe 8wO0nPk) gist_trgm_ops);

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

SELECT * FROM36w Permanent Kit Led Semi Lampe Manucure Uv À Vernis vnwN0OPym8 saisie.saisie_observation WHERE md.Base As Gel Primer 15ml Off Top Coat Soak 8kwXn0OPliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Lampe Led Porte Lumière Têtes Prise Réglable Séparateur Adaptateur 34 Base E27 Ampoule De 1TlFJKc