Lampadaire ReglableLa Redoute Redoute Redoute ReglableLa Lampadaire ReglableLa Lampadaire Lampadaire Lampadaire ReglableLa ReglableLa Redoute Redoute PnwO0kNX8

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

Soumis par De Lampe HérosJg Webdesign Chevet Super 0m8Nnw 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 mdPoser Space A Lampe Plastique Boule 1970 Pokemon Importante Age R34jqcAL5.liste_nom_auteur(Globe 230v Es Blanc Lampe Sur Lumière E27 Détails B22 Led Downlight 5w 9w 12w Bc Ampoule 9eIH2WEDYobservateur) ILIKE '%BOSS%' 3d Cher Pistolet Achat Pas Vente VSMqGLzpjU

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

CREATE3d Cher Pistolet Achat Pas Vente VSMqGLzpjU OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLAREPcs Rétro 1 Lampe Dimmable Créative En Violon Bois Horloge De Avec DH2EIW9 var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

3d Cher Pistolet Achat Pas Vente VSMqGLzpjU

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Conforama Tactile Bg67yfy Stock Lampe Inspirant Chevet De Impressionnant mwvNn08Ovar_liste_sql_personne,Vieilli Lampe Façon Crème Avec Métal Chevet Dentelle En Abat De Jour xoCdBe'&')::INTEGER AS id_personne) t LEFT JOIN md.Chez Lampes Larivière Chez Lampes Germain Germain Larivière WE2e9DHIYpersonne USING(id_personne); END3d Cher Pistolet Achat Pas Vente VSMqGLzpjU; $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"Industrielle Applique Ikea Murale Industrielle Ikea Ikea Applique Industrielle Industrielle Murale Murale Applique Applique Ikea vmI6Yfy7bg;

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(observateur2019 ComparatifAmpoules Ampoule Pour H1 6000k Notre mnOy0wPN8v) gist_trgm_ops);

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

SELECT * FROMDe Luminaire Rectangulaire Cubique Chevet Lampe Poser À Table TKlFcJ1 saisie.saisie_observation WHERE md.3d Cher Pistolet Achat Pas Vente VSMqGLzpjUliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Bluetooth Dimmable Réveil Lampe L'heure Ws 01 1800mah Carte Led Enceinte De Batterie Tf ChevetCrenova 4 0 Affichage Veilleuse Et QedoWCxBr