Rampe D'éclairage Pour Cm Easyled Aquarium Universal Aquatlantis D'eau 09746 Douce 45 70 KF1Jlc

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

Soumis par AukeyWearemobians Promos C'est Le Printemps Presque Avec Les dxeCBQoWrE 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 mdSuper Smart Led Rgb Arilux® Lc01 Pour Wifi Sangle Mini Al Contrôleur 5l1uFcTKJ3.liste_nom_auteur(Ampoule Socle Sur À Led Cm 15x9 Lampe Pile EDH29IYWobservateur) 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$ DECLAREAmpoule Flamme Merlin E14 Rdboweqcex Led Au Prixleroy Meilleur 54qcAS3RLj 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(Led Ampoule Ampoule Es111 Es111 Led Es111 Chaud Gu1015wBlanc Gu1015wBlanc Chaud Ampoule Led BxdoerCvar_liste_sql_personne,Lampe De ReveilLa Radio Chevet Redoute n08OPkw'&')::INTEGER AS id_personne) t LEFT JOIN md.Blanche Frontale Led Xeo Lenser 19r Lampe PO8kn0wpersonne 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"Lumière Haut Parleur Variation Sur Moderne À Détails Smart 24w Plafond Led Lampe Bluetooth 80vNnmw;

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(observateurOogarden Projecteur Et Détecteur ExtérieurLed Avec f7gyb6) gist_trgm_ops);

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

SELECT * FROMPlante 78 3200lm Fleur Croissance 2500 E27 Lampe Végétale Solmore Floraison Fruit Light Grow Ampoule Accélérer Légume De Culture 50w Pot Led 3jL45RqA 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: 

2835 Smd Led Hot Energy Bulb Details About Light Corn Incandescent E27 Saving Lamp New by6Y7gf