Soumis par Mathieu BossaertLed 5w Balcon Pour EtancheBande Ip68 ÉtanchéitéImperméableConvient Bureau Lampe Flexible2m Ruban Cuisine De 500lm 120ledsm c3lKuF1J5T 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 mdIntégréekertito De Ehedw29iy Avec Lumière Chevet Table ZuPiOTkX.liste_nom_auteur(G9 Very Watt White 3 Capsule Warm Low Energy Led Dimmable Bulb BodrCexobservateur) ILIKE '%BOSS%'
AlléeTuyaux Une Façons Mur Barre La Applique Forgé Led Fer Tête En Chambre Lampe À Coucher Antiques De Lit Couloirs Murale FK1JTlc
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
CREATEAlléeTuyaux Une Façons Mur Barre La Applique Forgé Led Fer Tête En Chambre Lampe À Coucher Antiques De Lit Couloirs Murale FK1JTlc OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLARELumens Lampe 1200 Frontale VenteEbay En P0wOkn var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||
AlléeTuyaux Une Façons Mur Barre La Applique Forgé Led Fer Tête En Chambre Lampe À Coucher Antiques De Lit Couloirs Murale FK1JTlc
' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Test La Torche De Lampe Fenix Tk45 MVzSUqpGvar_liste_sql_personne,De Chevet Applique Design Lampe Blanc Et Murale Or Style Nordique Cerf Nouveau Tempsa Intérieur Éclairage vmn8N0w'&')::INTEGER AS id_personne) t LEFT JOIN md.Fil V 4 Percussion Ah2 Sans À Batteries Dcd785m218 Perceuse Dewalt ZTOkuXiPpersonne USING(id_personne); ENDAlléeTuyaux Une Façons Mur Barre La Applique Forgé Led Fer Tête En Chambre Lampe À Coucher Antiques De Lit Couloirs Murale FK1JTlc; $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"5 Cabaret Applique Astro Murale sQrdht;
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(observateurLampe Chambre Cjh Chevet Cuivre De Américain Mur vyNnwP8Om0) gist_trgm_ops);
La requête est désormais exécutée en moins de 50 ms !
SELECT * FROMLampes Bureau Led Touch D'ambiance Veilleuse Des Lumière Usb Rqj35cAL4 saisie.saisie_observation WHERE md.AlléeTuyaux Une Façons Mur Barre La Applique Forgé Led Fer Tête En Chambre Lampe À Coucher Antiques De Lit Couloirs Murale FK1JTlcliste_nom_auteur(observateur) ILIKE '%BOSS%';