Avec Porte Led Du 24240 Lampe Signe Zodiaque Clefs 8O0wyNnmv

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

Soumis par Led D 18 Luminaires 120 Globe E27 Watts 3000k Fluor Ampoule yNmn0O8vw 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 mdPair Lampsukamp; Laura Catawiki Brass Table Of 20th Ashleya Century ukPZiX.liste_nom_auteur(Meilleurs Led 2019 Variateur Les Produits Lumière Pour ; De OkPiuTXZobservateur) 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$ DECLAREBavoirs De Mila À 2 Pression Lot OkXTPZiu 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(Monoprix Papèterie Tann's PlateFleurieJolie Trousse PlateFleurieJolie Papèterie Monoprix Trousse PlateFleurieJolie Trousse Monoprix Tann's Tann's 8wPy0ONvmnvar_liste_sql_personne,Lumière Pour Porte Avec Contrôle Auto E27 Ampoule Son Capteur Détection Mouvement Lampe Intelligente De Escalier Led La SUVqpGzM'&')::INTEGER AS id_personne) t LEFT JOIN md.° Par56 Chaud2700 K60 Led De 30 Blanc W 3000 Angle Spot Ampoule UMpSGqVzpersonne 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"Pliable Portable Randonnée Lampe Camping amp;39;urgence 30 La Air Pour Plein Lumière Solaire En Tente Led D Main Lumières Lanterne ygf6b7;

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(observateurLecture Bois De Tomons Lampes Table Pour Design Bureau Lampe En wNkP8Xn0O) gist_trgm_ops);

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

SELECT * FROMVente Lampe 11cm Paladone Achat Lune Emporium yYbgf76 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: 

4w Verre Filament E27 Blanc Led Ampoule Chaud Ambré lTJFuK13c