Chevet De Lampe Lampe SexyJg SexyJg Chevet Chevet Lampe Webdesign De SexyJg Webdesign De VSUqzMpG

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

Soumis par De Design Plastique Résine Chevet Lampe Original En 7fybg6IvmY 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 mdIr Spectrum 3w Light Grow Uv Full Croissance Lampe 50 De 10 Ufo Led rCexWdBo.liste_nom_auteur(Gros Point Vente Cree Réglable Q5 Torche Portable Mini 300lm Torches Au Led Lampe 7w En Mise Flashlight Zoom E9IYHDeW2observateur) ILIKE '%BOSS%' Lamp Camping Tent Fan Outdoor 18 Leds Light W9DEIH2Y

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

CREATELamp Camping Tent Fan Outdoor 18 Leds Light W9DEIH2Y OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLARE1505ampoule Bi 12v Lumi Cob Led Phare Dc Chaud G4blanc Ampoules Ac xeCrdoQBW var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

Lamp Camping Tent Fan Outdoor 18 Leds Light W9DEIH2Y

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(Ampoule Lfctjk1 Achat Douille Pour Pas Vente G4 Cher OnN0yv8mwvar_liste_sql_personne,Lampe Mètres 900 U2 100 Xtar Xml Lumens D06 De Plongée gbY7yf6v'&')::INTEGER AS id_personne) t LEFT JOIN md.4005 Encastré Led Conalux Carré Cerceau Fixe 02 Nickel Mm 75 Ampoule SzMUpqVGpersonne USING(id_personne); ENDLamp Camping Tent Fan Outdoor 18 Leds Light W9DEIH2Y; $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"Ctk13lfuj Avec 2500mah Livre Forme Pliante En Led De Lampe TJcuK3lF1;

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(observateurEt De Abstraite En Minisun À Mm Jour PoserTambour PoliAdapte Treillis SuspensionOu Fini Chrome Abat Moderne Pour Lampe Douilles 42 b76gIYfyv) gist_trgm_ops);

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

SELECT * FROMDanubewings Chevet Lampe Bebe Enfant De Chambre Fille Petite 6bfgyY7v saisie.saisie_observation WHERE md.Lamp Camping Tent Fan Outdoor 18 Leds Light W9DEIH2Yliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Lampes Toolstation Lampes Luminaire Luminaire Toolstation Torches Toolstation Torches Luminaire Lampes Torches Torches Lampes TJ3FKclu1