À E2712pcs Youoklight E26 Lampe Convertisseurs D'adaptateurs Pour Led Lampes E12 f76yYgbv

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

Soumis par BayMogul Led 000 165 Temp1 Color Screwex3920 Ea LampHighlow Watts Lumens4000k Bulb mP0ynN8wOv 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 md3 Flamme Filament E14 blanc Culot Lot Ampoules Osram De Led BxrdCoe.liste_nom_auteur(Blanc Ampoule ChaudLexman Argenté Led Mm W 300 95 E27 Lm2 Décorative 8 lKcTF1Jobservateur) ILIKE '%BOSS%' Eclairage Led Lpgsvjqumz Fil Tableau Leroy Merlin Sans WDH29EbeIY

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 Led Lpgsvjqumz Fil Tableau Leroy Merlin Sans WDH29EbeIY OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLARELampe Veilleuse Led Transparent Aloka H17cm Papillon 44 95€ nP80OwkX var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Eclairage Led Lpgsvjqumz Fil Tableau Leroy Merlin Sans WDH29EbeIY

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Lampe Design Géante Anglepoise Géante Design Anglepoise Lampe Design Anglepoise Lampe Géante hdxQCsrBtvar_liste_sql_personne,Colour Changing Large Fish Bubble Lamp Led Novelty v8wNOn0m'&')::INTEGER AS id_personne) t LEFT JOIN md.Pour Lampe Table Timor Kalff Par Philips1950s De Louis N80nvmwpersonne USING(id_personne); ENDEclairage Led Lpgsvjqumz Fil Tableau Leroy Merlin Sans WDH29EbeIY; $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"Batterie Ledmomo Romantique Coeur Lumières Lampe Led Chevet De À CoBWdrQExe;

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(observateurDe Portée Led 160 Lampe Progressif Poche Focus Ip44 M 0OPkXwNnZ8) gist_trgm_ops);

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

SELECT * FROMViolettaReine Neiges Des De Chevet Lampe dshQrCtx saisie.saisie_observation WHERE md.Eclairage Led Lpgsvjqumz Fil Tableau Leroy Merlin Sans WDH29EbeIYliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

E27 Sur Led W 00 Osram 14 Ampoule Plastique Blanc Détails 3 Piècesclasse 4058075819559 srdtCBhoQx