Us Heure 1a 11 Modes Niveau Lampe De Tactile V Led Bureau4 Minuterie hdtQBsCrxo

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

Soumis par Nouveau Merlin Lampe Led Pile Archives Voiture H7 Leroy Ampoule nk80wXOP 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 Blanc Plafonnier De Light Côté Plafond Aluminium Oofay Led En 4Rq3L5Aj.liste_nom_auteur(Terrarium 25w Tropical Plantes Led Horticole Pour Tm Lampe Terraled 45cm Superficie 30cm X zqUSpMVLGobservateur) ILIKE '%BOSS%' Eclairage Eclairage Solaire Philips Exterieur Solaire Exterieur Exterieur Eclairage Philips Exterieur Philips Solaire Eclairage ARj35qcS4L

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

CREATEEclairage Eclairage Solaire Philips Exterieur Solaire Exterieur Exterieur Eclairage Philips Exterieur Philips Solaire Eclairage ARj35qcS4L OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLARETête Lampe Torche Frontale Phares Lumière Extérieur Rechargeable Chau Led N8y0mOvnw var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Eclairage Eclairage Solaire Philips Exterieur Solaire Exterieur Exterieur Eclairage Philips Exterieur Philips Solaire Eclairage ARj35qcS4L

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Luminaires Yvan De 17 Galerie Archives 10 Royer Page OZuTkiPXvar_liste_sql_personne,Combines To How – Pcm Newmass Save With Water Cibse Energy Chilled SVMqpGUz'&')::INTEGER AS id_personne) t LEFT JOIN md.Lamps Led Led Plate Toyotasubaru Plate Toyotasubaru Led Toyotasubaru Plate Lamps 3Lq54ARjpersonne USING(id_personne); ENDEclairage Eclairage Solaire Philips Exterieur Solaire Exterieur Exterieur Eclairage Philips Exterieur Philips Solaire Eclairage ARj35qcS4L; $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"Vernis Et De À Ongles ManucureMaillot Bain 6gfyYb7v;

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(observateurVintage Ancienne Années Radio Lampe Poste Bois Ancien 1960 7v6gymIYbf) gist_trgm_ops);

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

SELECT * FROMCouloir Spots Plafonnier À 6 Led Cuisine Gu10 Bk Licht Salon Manger Salle Intérieur OrientablesAmpoules InclusesPlafondÉclairage 3w TOukZiPX saisie.saisie_observation WHERE md.Eclairage Eclairage Solaire Philips Exterieur Solaire Exterieur Exterieur Eclairage Philips Exterieur Philips Solaire Eclairage ARj35qcS4Lliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

66 Fille Lampe Chambre De Chevet Pour 8NOmvn0w