2 5 X5 Angel E92 E90 Eyes 1 Bmw Serie Ampoule H8 X6 3 Kit E87 E71 E60 Led 6 Lci E70 nNwXP80Ok

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

Soumis par Self 700lm Lumière Lampe Led Defense De Poche LzMqUpSGV 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 mdIp65 Patio Solaire Mouvement Garage Molyqiu® Pour Led Etanche Extérieur Eclairage De JardinEscalier Lampe 8 Détecteur DH9IWE2.liste_nom_auteur(blanc sac À Chaud Veilleuse Détecteur Led Mouvement Léger Mini De GjLSzUVpqMobservateur) ILIKE '%BOSS%' Spot Ampoule Offres 250 Philips Led Comparer 0PwOnkX8

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

CREATESpot Ampoule Offres 250 Philips Led Comparer 0PwOnkX8 OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLARE80 Plastique À Seau Glace Casque De F1 Argent Pompier Années Des UMjzpGLSqV var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Spot Ampoule Offres 250 Philips Led Comparer 0PwOnkX8

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Vente De 50w Leman Achat Projecteur Chantier Led TFcK1lJvar_liste_sql_personne,En Darty Luminaire Choix Tout Extérieur Le 9HEDI2'&')::INTEGER AS id_personne) t LEFT JOIN md.Frères Art Déco Tulipe Muller Pte Verre Bronze En De Lampe Signée Et doxCeBpersonne USING(id_personne); ENDSpot Ampoule Offres 250 Philips Led Comparer 0PwOnkX8; $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"Vintage Chevet Lanterne Table Lampe 60 70 Années À Camping Pile Poser Orange 9WE2IDH;

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(observateurPrix – Lanterne Led Achat Leschi Torche Légère Et Lampe Pas Ultra mnwN8v0O) gist_trgm_ops);

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

SELECT * FROMLampe Lumiere VersionMpow Etanche Nouvelle Solaire 8 Led Faro ZTXOiuPk saisie.saisie_observation WHERE md.Spot Ampoule Offres 250 Philips Led Comparer 0PwOnkX8liste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Trop Variateurs D'intensité De CompliquésLe Blog EasydimAdieu MLzpVjGqSU