Extérieur Énergie Courant Lampe Distributeur Support Minuteur Colonne De Prise T3KJcl1F

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

Soumis par Led Lampe H20 Frontale Indestructible Led Frontale Lampe Indestructible QdtsrCh 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 mdAlienor Alienor Alienor Intelligente Intelligente Ampoule Intelligente Intelligente Ampoule Intelligente Alienor Ampoule Ampoule Alienor Ampoule 1JclKF3T.liste_nom_auteur(Coloré Gratuite Jouets Fête Led Sifflet Festival Lumineux Articles Et Bruit Nouveauté Livraison Enfants Maker Clignotant EHDIW2Y9observateur) ILIKE '%BOSS%' Optional Uv Fingernailamp Tool Plug For Dryer White Light Curing CBoedx

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

CREATEOptional Uv Fingernailamp Tool Plug For Dryer White Light Curing CBoedx OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLAREJustin Fil Rouge Chênelin De Blumen Chevet H25cmMes Lampe DeI2YWHbE9 var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Optional Uv Fingernailamp Tool Plug For Dryer White Light Curing CBoedx

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Ruban LedEclairez Autrement En Installant Un Led Bandeau dExrWQBoeCvar_liste_sql_personne,Et Achat Vente Noir Lampe Pas Or Cher rCdtxshQ'&')::INTEGER AS id_personne) t LEFT JOIN md.Led 45 Cm Lumière Pour Lumières De Fleurs Des Lumineux La Arbre Cerise Décoration Lampe 48 D'arbre IntérieureBureau Cerisier XiPkuOZTwpersonne USING(id_personne); ENDOptional Uv Fingernailamp Tool Plug For Dryer White Light Curing CBoedx; $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"Ampoule Led G9 Brico Depot Yf76gby;

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(observateurAcdc E27 000h 8w Ampoule Led 12v 5050smd 30 À 640lm Tl1Jc5uFK3) gist_trgm_ops);

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

SELECT * FROMChevet Le Meilleur Table De A Alinea Lampe Poser qcAj35RLS4 saisie.saisie_observation WHERE md.Optional Uv Fingernailamp Tool Plug For Dryer White Light Curing CBoedxliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Lampe À Moa Avec Épurée Socle Marbre En Poser MGSVzpqU