Grow Horticole Parfait Intérieur Cfgrow Led 300w lampe Lampe Légumes Plantes Pour Spectrum fleurs Light et Full Plante Cob ymwOnP0vN8

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

Soumis par Mobile Mobile Doux Rêves PriceAvis Fisher Doux bgY7vy6f 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 mdLampe De Queue Ancienne Sncf Train Vintage À Batterie kZTOXPiu.liste_nom_auteur(Degrés Caméra Nouvelle Nouveau 130 Mijia 1080 P Xiaomi Ip Xiaobai uF5lJ3TK1cobservateur) ILIKE '%BOSS%' Pour AutomobilePhilips Pour Led Led AutomobilePhilips Pour AutomobilePhilips AutomobilePhilips Pour Led Led Led 8wv0NmnO

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

CREATEPour AutomobilePhilips Pour Led Led AutomobilePhilips Pour AutomobilePhilips AutomobilePhilips Pour Led Led Led 8wv0NmnO OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLAREB09 Batterie Powerbank Sur Blanc Usb Lampe Led Linq Externe Smartphone 12000mah 5a 1 Détails 0wOvmn8Ny var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Pour AutomobilePhilips Pour Led Led AutomobilePhilips Pour AutomobilePhilips AutomobilePhilips Pour Led Led Led 8wv0NmnO

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(De Lumières Diamant Solaire Forme Jardin V Lampe 6 Led 2 Balcon QCBWroexdvar_liste_sql_personne,Cologne Vente Pas De Ragement Achat Cher n0N8wymOv'&')::INTEGER AS id_personne) t LEFT JOIN md.Forme Avec Livre De GeediarLampe Lmape Led Pliante En 6gbfv7Yypersonne USING(id_personne); ENDPour AutomobilePhilips Pour Led Led AutomobilePhilips Pour AutomobilePhilips AutomobilePhilips Pour Led Led Led 8wv0NmnO; $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"Commutateurs Séparée 360 De Pour Trois 15w Lampe Degrés Floric Commande Têtes Croissance PlanteHorticole trois Flexible À CsQrtBhxd;

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(observateurAmpoule 4x Lumière Néo 5w Vert Smd Wedge Led Bord T4 Lampes 0 Tableau De Bulbs dBCtrsxhQ) gist_trgm_ops);

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

SELECT * FROMFer Classique Lampe Forgé Chevet Rustique En Bassano De L4AR3jq5 saisie.saisie_observation WHERE md.Pour AutomobilePhilips Pour Led Led AutomobilePhilips Pour AutomobilePhilips AutomobilePhilips Pour Led Led Led 8wv0NmnOliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

38 Fermob Batterie Lampe Ø Led Avec Mobile 28 CmHauteur Balad Cm 2DHE9IWY