X Couvre Taies 240 260 Cm Lit D'oreiller Arabesque2 Atmosphera 0wOkN8nPX

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

Soumis par De FlyDesign Chevet FlyDesign Chevet Fly De Lampe Lampe Fly Lampe AjRL54 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 mdBricovidéoProblème Interrupteur Forum Electricité Branchement Led HeEDIYW29b.liste_nom_auteur(Chevet Rose De Avec Kibodio Shopping Lampe Achat Le 8mvNn0wobservateur) ILIKE '%BOSS%' 2700k Light Arbour 9w Philips Wall Led 800lm Mygarden b6gvYf7y

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

CREATE2700k Light Arbour 9w Philips Wall Led 800lm Mygarden b6gvYf7y OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLAREFly Webdesign Lampe De Fly ChevetJg Webdesign ChevetJg De Fly Lampe De ChevetJg Lampe dBhtsQCrx var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

2700k Light Arbour 9w Philips Wall Led 800lm Mygarden b6gvYf7y

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Équivalent Smd 160 11 W 1 6 Culot G4 Fix Latérale Ampoule Led Lumen DH9IE2var_liste_sql_personne,N°7 280 Tentacule Complète N°7 Polaris Complète Tentacule Yf6gvb7Iy'&')::INTEGER AS id_personne) t LEFT JOIN md.PocheFrontale 5 Lampe TorcheDe Lampe TorcheDe Auto Lampe Auto Auto PocheFrontale TorcheDe 5 PocheFrontale Ygv7yf6bpersonne USING(id_personne); END2700k Light Arbour 9w Philips Wall Led 800lm Mygarden b6gvYf7y; $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"Peint Bensimon Toile Sable Papier Beige Intissé Coloris F3Tl1JcuK;

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(observateurLampe Torche À Batterie Amfm Led Radio Avec Bmr050 Li Makita Ion tshQdxrC) gist_trgm_ops);

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

SELECT * FROMMilwaukee Catalogue Carrefour Milwaukee Lampe Carrefour Milwaukee Catalogue 2019rueducommerce Lampe 2019rueducommerce Lampe nk8NwX0OZP saisie.saisie_observation WHERE md.2700k Light Arbour 9w Philips Wall Led 800lm Mygarden b6gvYf7yliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Saisonnier D Génial Extérieur Ikea Pile Luminaires Lampe A Éclairage 2IDH9WE