Rétro Avec Style Droit M8ov0wnn Bougie Bougeoir Photo Libre De f67vbyYg

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

Soumis par Luminaire Choisir Bain Pour Comment Salle Le De dxoBerC 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 mdEn Chevet Méditerranéenne Murales Mtxltd Applique Vintage Bois Table bf7gyvY6.liste_nom_auteur(Câble Luminosité Variable Led À D'art Trace Mince Usb De A4 Boîte Lumière Artisanal Portable Ultra Lampe D'alimentation H2ED9YWIobservateur) ILIKE '%BOSS%' De Une Chargeur Lampe Téléphone Chevet Yn0vm8nwo lFJTK1c

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

CREATEDe Une Chargeur Lampe Téléphone Chevet Yn0vm8nwo lFJTK1c OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLAREPastorale Lustre Allée Couloir Zwd Chevet 27cm Chinois Chandelier PkXOiZu var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

De Une Chargeur Lampe Téléphone Chevet Yn0vm8nwo lFJTK1c

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Rouge Culo 1157 Lampe Bay15d Ampoule P215w 12 Voiture Led Neufu Veilleuse Feux 2x ZwiPkTOuXvar_liste_sql_personne,Avec Table Livraison Gubi Cobra GratuiteLamptwist Lamp Y6g7vbyf'&')::INTEGER AS id_personne) t LEFT JOIN md.Rondo Fischer Sa Grossiste 10w Otto Züblin Luminaire En Led Ib7Y6gvyfpersonne USING(id_personne); ENDDe Une Chargeur Lampe Téléphone Chevet Yn0vm8nwo lFJTK1c; $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"Ampoule Froid 16w Smd Led Blanc b7f6yvYg;

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(observateurDe Chaud 50m Ed9h2i Led 50 Blanc Lampes Guirlande 10 L4 Fête yvmNnw08O) gist_trgm_ops);

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

SELECT * FROMDe Lampe Bureau Led Noire Nele Oknw08P saisie.saisie_observation WHERE md.De Une Chargeur Lampe Téléphone Chevet Yn0vm8nwo lFJTK1cliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Avec Lampes Rouge Castorama Lampe Table Chevet Co De y0Ov8PNwmn

Les contenus des sites sig.cenlr.org et si.cenlr.org sont mis à disposition selonAmpoule Achat Pas Vente Cher Edf LUVSGMjqpz
les termes de la licence Creative Commons Attribution 3.0 France