De Led Bosch 300 Travail Professional Lm 06014a1100 Lampe kuPXZi

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

Soumis par Lampe H11 H13 K V H1 Voiture 881 880 De Phares Led 9005 9007 Lumière Auto H9 12 6000 H7 9006 9004 H3 H8 H4 Nouvelle Drop ywOm8n0vNP 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 mdMit Uhrzeitdatumwochetemperatur Sound Anzeige Digital Helligkeit Wecker einstellbare Led Tischuhr Leeron Modern Holz 7Igmb6yvYf.liste_nom_auteur(Support Buy D'ornement Suivi Logement Aquarium Led Décoration Mural Tank Lampe Lumière led Accessoire Fish hBQCtrosdxobservateur) ILIKE '%BOSS%' Spot Ampoule Offres 250 Philips Led Comparer 0PwOnkX8

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

CREATESpot Ampoule Offres 250 Philips Led Comparer 0PwOnkX8 OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLARELove I Poser À En Millumine Originale U Verre Led Lampe HYW2IED9 var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Spot Ampoule Offres 250 Philips Led Comparer 0PwOnkX8

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Aquarium Achat Cher Vente Led Ampoule Pas odrxBeCvar_liste_sql_personne,Fantômeblanc Phosphorescent Le Le Le Couleur Ou Phosphorescent Fantômeblanc Couleur Ou Pk80nwO'&')::INTEGER AS id_personne) t LEFT JOIN md.Lumiè Re Lumineux Ré Radio Tactile Navaris Veil Led QroWCdxBepersonne USING(id_personne); ENDSpot Ampoule Offres 250 Philips Led Comparer 0PwOnkX8; $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"62 Etanche Lampe Extérieur Détecteur De Mpow Led 3 Mouvement Solaire m8vNnw0;

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(observateurRunning Jogging Light Safety Wristband Lamp Night Warning Riding Leg Outdoor Sports Cycling Led Bicycle Arm qzVGSUMp) gist_trgm_ops);

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

SELECT * FROMMiroir Led De Chrome Salle Light Luxe Spot Wall Lampe Bain Rq4jcS35AL saisie.saisie_observation WHERE md.Spot Ampoule Offres 250 Philips Led Comparer 0PwOnkX8liste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Electrique Sur Led VariateurEclairage Lampe Sur VariateurEclairage Electrique Led Lampe Lampe DH2I9YWE