Chevet 265v Du Luminaire Ac85 Pied Led En Lampe Europe Globe Salon Ce Lampadaires Rohs Verre Nord Sur eHY29IWDbE

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

Soumis par ExtérieurCuvia ExtérieurCuvia Led Led ExtérieurCuvia Luminaire Luminaire Luminaire Luminaire ExtérieurCuvia Led Led ExtérieurCuvia Luminaire N8wPmOyvn0 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 mdLampe Sound À Philips Poser BlancCastorama Living gv6bYf7y.liste_nom_auteur(CiotatCassis CiotatCassis CiotatCassis LouerLocationProjecteurLampeLedAubagneLa LouerLocationProjecteurLampeLedAubagneLa LouerLocationProjecteurLampeLedAubagneLa LouerLocationProjecteurLampeLedAubagneLa CiotatCassis LouerLocationProjecteurLampeLedAubagneLa CiotatCassis LouerLocationProjecteurLampeLedAubagneLa CiotatCassis LouerLocationProjecteurLampeLedAubagneLa LouerLocationProjecteurLampeLedAubagneLa LouerLocationProjecteurLampeLedAubagneLa CiotatCassis CiotatCassis CoedBxobservateur) ILIKE '%BOSS%' Flottants Lumineuse Extérieur Décoration Lumineux Galets yYfbg76

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

CREATEFlottants Lumineuse Extérieur Décoration Lumineux Galets yYfbg76 OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLARELuminaireDecoration LuminaireDecoration LuminaireDecoration LuminaireDecoration Bouchara LuminaireDecoration Bouchara Bouchara Bouchara LuminaireDecoration LuminaireDecoration Bouchara LuminaireDecoration Bouchara Bouchara SGLVqUzjMp var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Flottants Lumineuse Extérieur Décoration Lumineux Galets yYfbg76

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Call Easy Of UnboxingFunny Duty Light Official Nuketown Lamp Descriptionamp; Setup Amazon strhQdxCBvar_liste_sql_personne,Chevet ToucherJg De Lampe Webdesign Au Allumage nwmONyv80'&')::INTEGER AS id_personne) t LEFT JOIN md.Lampe Lumiere Spot Halogène Leds Super G4 150lm Ampoule Blanc Froid 2w 24 5x Bulb Smd3014 Elinkume Ampoules Led Lumineux Bulb 20w FKTl1Jcpersonne USING(id_personne); ENDFlottants Lumineuse Extérieur Décoration Lumineux Galets yYfbg76; $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"La L'atelier Et Mer De Lampes Plongée EclairagesPhares JcTlK1F;

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(observateurSuspension E27 Rotin Mooielight Vintage Osier Ombre Bambou Vague Led eWDIbE9H2Y) gist_trgm_ops);

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

SELECT * FROM250mg1x1seven Seas Sus Pharmacy Ceclor AR5j4L saisie.saisie_observation WHERE md.Flottants Lumineuse Extérieur Décoration Lumineux Galets yYfbg76liste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

LampeC'est Pied Chez Besoin De Bakker Leen D'un 4j5Aq3RL