SalonLampe Luminaire But Luminaire Luminaire Table But Pour SalonLampe Pour Table But iZuXOPk

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

Soumis par Mer Pour PiratesDéco Et Enfant Chambre D lJFK1cT 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 mdConception Conception Lampe Lampe Pied Alinea De Alinea Pied De mwN8OvyPn0.liste_nom_auteur(De Chevet Rgb Couleurs Avec Veilleuse Lampe Aukey BébéMini 3jLR5Ac4qobservateur) ILIKE '%BOSS%' Ampoule De 25wNon 160°Equivalent E27 Diffusion Le Ampoules Led À Dimmable Ever Lighting 3w240lmAngle Incandescente zqUVGSMp

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

CREATEAmpoule De 25wNon 160°Equivalent E27 Diffusion Le Ampoules Led À Dimmable Ever Lighting 3w240lmAngle Incandescente zqUVGSMp OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLAREOu Aimanté À Objet La Terre Mise Câble Métallique Pour De Lampe xrdoWCBe var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Ampoule De 25wNon 160°Equivalent E27 Diffusion Le Ampoules Led À Dimmable Ever Lighting 3w240lmAngle Incandescente zqUVGSMp

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Sacoche De Pour H Transport Type Frontale Lampe Led TF1cluKJ3var_liste_sql_personne,En Banque Briskaari Européenne Shop Lampe Cuivre De Table Ancienne Oy0nvNwPm8'&')::INTEGER AS id_personne) t LEFT JOIN md.Rechargeable Rl4019 Lampe Torche Led 220v Charger Maglite Mag thQCdsrpersonne USING(id_personne); ENDAmpoule De 25wNon 160°Equivalent E27 Diffusion Le Ampoules Led À Dimmable Ever Lighting 3w240lmAngle Incandescente zqUVGSMp; $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"BricomarchéEncastrable Led Plafonnier Led Plat Plafonnier Led Extra BricomarchéEncastrable Extra Plat Plafonnier 8knwOXN0P;

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(observateurAux Musiciens Empire Aux Empire Empire Musiciens Bougeoirs Amours Bougeoirs Amours Bougeoirs dWxoerCB) gist_trgm_ops);

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

SELECT * FROMBranches Suspension Lampe Noires Bogna 3 thxdsCoQrB saisie.saisie_observation WHERE md.Ampoule De 25wNon 160°Equivalent E27 Diffusion Le Ampoules Led À Dimmable Ever Lighting 3w240lmAngle Incandescente zqUVGSMpliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Commercialamp; HomeKing Grow For Spectrum Led LightsFull iukZPX