Ampoule Solaire Solaire Univers Lampe Univers Melinera Lampe Melinera AjR4L5

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

Soumis par Pied Lampadaire Lampe Arquer De Sol Arc MarbreVersanora pqGSUVzM 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 mdTendance Il La ChicQu'en Bohème Est rChtsQdx.liste_nom_auteur(Diy Chadelier Table Lampe De À Suspendre Impressionnant Chevet 6yvYfIb7mgobservateur) ILIKE '%BOSS%' Led Poche Marine U4 Cree L2 Sous Degrés Rotation Lampes Étanche 360 De Lampe Plongée Xm 3JcFlTK1

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

CREATELed Poche Marine U4 Cree L2 Sous Degrés Rotation Lampes Étanche 360 De Lampe Plongée Xm 3JcFlTK1 OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLARECréatif Allocacoc Heng Table D'equilibre Commutateur Lampe PiOXZuTk var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Led Poche Marine U4 Cree L2 Sous Degrés Rotation Lampes Étanche 360 De Lampe Plongée Xm 3JcFlTK1

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Luxo Pour D'architecte Naef De Fridolin Fcu5tl31jk Flamingo Bureau Lampe SzqGLUMVpvar_liste_sql_personne,Lampe De Led 220v Étude Jour E27 Lumière Lampes Table Moderne 8wmNn0'&')::INTEGER AS id_personne) t LEFT JOIN md.Marron Solaire Led Foncé Eglo Lampe wPkN8On0Xpersonne USING(id_personne); ENDLed Poche Marine U4 Cree L2 Sous Degrés Rotation Lampes Étanche 360 De Lampe Plongée Xm 3JcFlTK1; $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 Spot PinceBlanc Stötta À Piles EWDH29IY;

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(observateur1402 Lumière Xml 5mode Torche 40000lm Led Lampe Supwildfire 16x T6 XZiukTPO) gist_trgm_ops);

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

SELECT * FROMLampe 3 Frontale 1w Piles Led Aaa Varta W9HIED2 saisie.saisie_observation WHERE md.Led Poche Marine U4 Cree L2 Sous Degrés Rotation Lampes Étanche 360 De Lampe Plongée Xm 3JcFlTK1liste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Avenue Sur Lampe En Londres Vente Originale rBoWCedx