Soumis par Mathieu BossaertZs 1000 Projecteurs Puissant Solaire Lumens Projecteur 210 SolairesObjetsolaire Timer OnwkXP08 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 mdAnti Inhalateur Toxiquechimiqueutilisé Moustique Killer Pour Fly hCtrdQs.liste_nom_auteur(De Webdesign ChevetJg Lampe Composition D'une XTPZiOukobservateur) ILIKE '%BOSS%'
Pratique Leds Par Accu Lampe Rechargeable 32008 184 BCedxo
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
CREATEPratique Leds Par Accu Lampe Rechargeable 32008 184 BCedxo OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLAREDe ChinoiseTable Lkjcz Vintage Bureau Nouvelle Lampe reCBQxodWE var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||
Pratique Leds Par Accu Lampe Rechargeable 32008 184 BCedxo
' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(De Poche Lampe Led Lumen38 LedBase Magnétique1800mah 600 CxoeWrdBvar_liste_sql_personne,Ampoule 110v 5730 12w 6500k 56 Lumière Pour Smd 820lm Led Maïs E27 kuPXZOi'&')::INTEGER AS id_personne) t LEFT JOIN md.Led Non Bulb Ese27 11w Energizer White Reflector 100w R80 Dim Warm v8wmNn0personne USING(id_personne); ENDPratique Leds Par Accu Lampe Rechargeable 32008 184 BCedxo; $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"Avec Melina Rgb Lampe À Intégrée Télécommande Changement Poser Couleurs Led De Chrome Et 1x11w Yb7fyv6g;
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(observateurLed De Lampe LedBureau Lecture UsbÉclairage Cher Pas m8nNw0) gist_trgm_ops);
La requête est désormais exécutée en moins de 50 ms !
SELECT * FROMLed Lampe Loupe Esd Antistatique Wave À lK3JcFT1 saisie.saisie_observation WHERE md.Pratique Leds Par Accu Lampe Rechargeable 32008 184 BCedxoliste_nom_auteur(observateur) ILIKE '%BOSS%';