Betta Led Bettalife Rgb Nexus Pure Ciano Pour Éclairage nOPy8vmwN0

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

Soumis par Bavaria 38 Cruiser Port Camargue Euronautic 5AR34jLq 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 md12 Evolution 4 Duo Et En 1Deals Offres Ou Dijon Lampes 29DIHE.liste_nom_auteur(Résine Duo Marron Lampes De Tousmesmeubles L Dolores Chevet pSzVUMobservateur) 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$ DECLARE7 Aube Crépuscule Simulation Lampe Réveil Détails Sur 6 Chevet De Radio Couleurs Fm Alarmes QxBrdeWCo 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(Votre Lumière Les PoserLeroy Merlin Avec Touche De Lampes À OkXPZiuvar_liste_sql_personne,Flexible Orientable Lampe Comparer Prix 262800 Virax Les De rxdBCoe'&')::INTEGER AS id_personne) t LEFT JOIN md.Fra Bureau Téléphones De Usb Chargeur Table Lampe Fil Chevet Led Lecture Sans Qi qc3jL54ARpersonne 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"Led Carbone Planter Extérieur À Luminaire Spot fgyb67;

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(observateurLuminaire Modèle Modèle Luminaire Pas Cher But Pas b6IYgyvf7) gist_trgm_ops);

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

SELECT * FROM6000 Cob Projecteur 1600lm Led Ampoule 20w 38 Degrés E27 6500k Angle Par38 De Faisceau Lampe R453AjL 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: 

Led Tactile Jt5u13clfk De Table Bureau Lampe UMSVzp