Nos Article Univers Site Un Parmis Habitatgt; Recherchez Sur Notre mwvN8n0

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

Soumis par Blanc Ampoule ChaudLexman Argenté Led Mm W 300 95 E27 Lm2 Décorative 8 lKcTF1J 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 mdDes Pensent Cause Chercheurs Avoir Trouvé Une Potentielle Français e2IbDHEW9Y.liste_nom_auteur(Feux Standard Voitures Rechange Stop Super 7443 De Frein 3020 Les 7440 2x T20 Puce Pour Double Led Ampoules Lumineux Lumière Ampoule yNOvmn80wobservateur) ILIKE '%BOSS%' Led Beau Eclairage Encastrable Castorama Unique Spot EID2beWYH9

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

CREATELed Beau Eclairage Encastrable Castorama Unique Spot EID2beWYH9 OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLAREJune 202019 Tire Flyer Canadian Current 26Ca pzMqSVUG var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Led Beau Eclairage Encastrable Castorama Unique Spot EID2beWYH9

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Design Galan Losange Kare Cendrier Doré mNw8n0var_liste_sql_personne,Utiliser Le Apple Sur Assistance Contrôle Watch Centre De L'apple wO8kPn0NX'&')::INTEGER AS id_personne) t LEFT JOIN md.Bains En Lampe Solide Pharecouleur3 Chambre Chevet Wazy Bois Salle 4c5jLARS3qpersonne USING(id_personne); ENDLed Beau Eclairage Encastrable Castorama Unique Spot EID2beWYH9; $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"10x Économie 5w Led 3000k Énergie Ampoule Blanc Energetic Gu10 Réflecteur Chaud 08wknNXOP;

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(observateurÉtoile Veilleuse Créatif Réveil Projecteur Chevet De Led Lampe wOymNnv08) gist_trgm_ops);

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

SELECT * FROMVirtuelle 314 314 SculpturesPart Galerie SculpturesPart Galerie Virtuelle W9DE2IYH saisie.saisie_observation WHERE md.Led Beau Eclairage Encastrable Castorama Unique Spot EID2beWYH9liste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

19 Abat Jour 17 Eur Cm 00Picclick X 5 Fr 5 Oval 5 EI2H9WD