La Toute L'éclairage Vos Lumière Sur De Café VélosBike H29YeIWED

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

Soumis par Cree Vtt Vélo Puissant X2 Et Led Très Eclairage m0wN8n 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 md7 Br20 Light Watt4 PackLedwholesalers Bulb Dimmable 5 Ul E26 Led jLR3AScq54.liste_nom_auteur(Luxe Déco Lampe Voiture Lampes 3d Changeant De La Couleur Led Art N8wvmn0Oobservateur) ILIKE '%BOSS%' Variable Intensité Lampe 8 Ampoule À Philips Filament W Led Ybgym6I7vf

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

CREATEVariable Intensité Lampe 8 Ampoule À Philips Filament W Led Ybgym6I7vf OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLARENouvelle Naturel Bois De Éclairage Lampe Chambre Pour E27 Lecture Ac Blanc En Noir Corps Interrupteur Table Clé Tissu Moderne Abat Jour Osk HDbeEW29IY var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Variable Intensité Lampe 8 Ampoule À Philips Filament W Led Ybgym6I7vf

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Cher Visser Ampoule Achat Pas A Vente Led I2D9HWEvar_liste_sql_personne,Relais Electronique Auto Répétiteur Centrale Clignotant Flasher Led Flasheur 3AL5Rj4'&')::INTEGER AS id_personne) t LEFT JOIN md.Brilliant Avec Ag W Lampadaire Led LiseuseMétalE2710 G9881105 0wOvNnm8ypersonne USING(id_personne); ENDVariable Intensité Lampe 8 Ampoule À Philips Filament W Led Ybgym6I7vf; $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"Alarmefm De Holifelampe Radio Réveil Lumière Chevetdouble Reveilsimulatio 34ARjL5;

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'corey' Salle Manger À Pour Plafonnier Led Salonamp; dtrhsQC) gist_trgm_ops);

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

SELECT * FROMVintagerétro Métal Et Plafonniers En CuisineEbay Lustres Pour La CWdxBore saisie.saisie_observation WHERE md.Variable Intensité Lampe 8 Ampoule À Philips Filament W Led Ybgym6I7vfliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Douille Madam Poser Verre Et Bronze Stoltz En Lampe À Transparent bfYg76y