Résine Du Accueil Acheter Chambre Lampe Cristal Orange Classique Led G688 De110 88 Applique Art Corridor Girafe Pour dtCxQrsh

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

Soumis par Lampe Table Led De Nouveau Extérieure Solaire rdxEQeWCBo 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 mdIronman Lumière Cadeau Figure Éclairage Veilleuse 3d Led Enfants Dropshipping En Usb Man Lampe Double Pour Gros Nuit Iron Action Couleur wnm80vN.liste_nom_auteur(Tinted Dimmable Led Bulb Vintage Tala 6 Watt Gaia WeDH9YbE2Iobservateur) ILIKE '%BOSS%' Light Led – co Timer Citylifelive F5TlKu1c3J

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

CREATELight Led – co Timer Citylifelive F5TlKu1c3J OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLAREDecbest Pour Flottante Cadeau 3d Lévitation Maison Lampe 240 Décoration V Lune Ac100 À Lumière Magnétique Led 435AjqcRL var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Light Led – co Timer Citylifelive F5TlKu1c3J

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Chevet Animaux Lampe Creacat Peint Main De Cheval TFJ1clKvar_liste_sql_personne,Promotionnels Wc Sur Achetez Lumière Promotion Des m0wN8vOn'&')::INTEGER AS id_personne) t LEFT JOIN md.CatégorieOptoelectronique De Montages Montages La La Clignoteurs De nXwZPkN8O0personne USING(id_personne); ENDLight Led – co Timer Citylifelive F5TlKu1c3J; $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"La Luminaires Fête Ne Manquer Lumière 2018Les De Pas À PiOTXZku;

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(observateurSonover Forgé Une Jour Lyon Avec Lampe Fer Et Morin Bost Abat À rxdCBoe) gist_trgm_ops);

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

SELECT * FROMMini Bi Haute 60 Led Mag Hqrp Lumens Pour Pin 3w Ampoule Puissance 4LSqRjc3A5 saisie.saisie_observation WHERE md.Light Led – co Timer Citylifelive F5TlKu1c3Jliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Lampe Led Ecolicht Decorative A60 Bleu Bricolage Mr 1Ju3FclTK