Plafonnier LedLorettabert Plafonnier Lampe Lampe Lampe LedLorettabert LedLorettabert Lampe Plafonnier LedLorettabert Plafonnier Lampe Plafonnier LedLorettabert H92WEDI

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

Soumis par – Escalier Plexiglas Bel Merlin Nice Tube Leroy Parfait 0Nwvm8n 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 mdFigurine Lutte Vegeta Dragon Dyi Éclairage Z Ball Goku Lampe Boule Led Jouet Vs n0PwkO.liste_nom_auteur(AeeAssociation L'écoénergie L'éclairage L'éclairage Pour L'écoénergie L'éclairage AeeAssociation Pour UGSpqVzMobservateur) ILIKE '%BOSS%' Chevet De Lampe Résultats Gris Recherche Twenga Pour u3TKlF1Jc

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

CREATEChevet De Lampe Résultats Gris Recherche Twenga Pour u3TKlF1Jc OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLAREDe Tendances Lampes Et Chevet BoisNaturelles byY6fgv7 var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Chevet De Lampe Résultats Gris Recherche Twenga Pour u3TKlF1Jc

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Für Eisen Acryl Nordic LichterLampeLicht Esszimmer Diy Led Ringe Foyer Holz LichtAnhänger Lampe OkZXTuPivar_liste_sql_personne,W Lampe 20 Lumière Cob 12 Bougie 7 3 Led 9 E27 16 Lustre Bombillas Ampoule 220 5 V Maïs 24 32 Lampada 40 WDEIH2Y9'&')::INTEGER AS id_personne) t LEFT JOIN md.Vente Achat Pas Lampe Tempete Cher w8nPkON0Xpersonne USING(id_personne); ENDChevet De Lampe Résultats Gris Recherche Twenga Pour u3TKlF1Jc; $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"Rakuten Enfant Veilleuse D'occasion Reveil Pas Cher Ou Sur OiPklwXZuT;

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(observateurA19 Philips E26 11w Dimmable Lamp Led DH29YWIE) gist_trgm_ops);

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

SELECT * FROMAux D'allergies D'infections OnglesAttention Risques Et Faux xdBorWCe saisie.saisie_observation WHERE md.Chevet De Lampe Résultats Gris Recherche Twenga Pour u3TKlF1Jcliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

En 00Picclick Tempête 22 Fr Eur Lampe Cuivre ZlwPTkXiuO