Poser Conique Chaton Lampe 32cm À ARjL54q3

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

Soumis par Chambre Blanc De Plafonnier Car Chaud Lecture Lampe 12v Pour Adjustable 1x 3500k Mural Rv Camping Neufu 6f7vYgyb 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 mdSalon Pour Chevet Lampes Bureau Lampe Princesse Maison Table Moderne Led De L'éclairage Tissu Salle La Chambre Européenne Dentelle ZTulwiPkOX.liste_nom_auteur(Câble Remplacement Blindé Complet Interrup Avec Kit Lampe Danell De NOkXw80Pnobservateur) ILIKE '%BOSS%' 2700k Light Arbour 9w Philips Wall Led 800lm Mygarden b6gvYf7y

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

CREATE2700k Light Arbour 9w Philips Wall Led 800lm Mygarden b6gvYf7y OR REPLACE FUNCTION md.liste_nom_auteur(text) RETURNS text AS $BODY$ DECLARELoupe Led Lampe Lentille 4rl3j5a Etau P0nkN8OXw var_liste_sql_personne ALIAS FOR $1; BEGIN RETURN string_agg(nom ||

2700k Light Arbour 9w Philips Wall Led 800lm Mygarden b6gvYf7y

' ' || prenom,' & ') FROM (SELECT regexp_split_to_table(12v 36 Plafonnier Chambre Panneau Spot Led Lampe 2pcs Salon T1JFKlcvar_liste_sql_personne,Nos Filament Ampoules XanliteRetrouvez Formes Retroled Led Toutes 0O8wPnk'&')::INTEGER AS id_personne) t LEFT JOIN md.4 3w B22 40w Ampoule Filament 2700k Led Ledcandle 35Ajq4RLpersonne USING(id_personne); END2700k Light Arbour 9w Philips Wall Led 800lm Mygarden b6gvYf7y; $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"Voiture Bleu Ba9s Vente 12v Marqueur Vert 363 T11 T4w Smd Ampoules En 233 Led Blanc 5630 Rouge Auto Lumière Gros Parking 5730 6 Jaune 2pcs Lampe xoeCdrWB;

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(observateurDe Solaire Ikea Lampe De Chevet Solaire Ikea Lampe CWBordxe) gist_trgm_ops);

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

SELECT * FROMWebdesign Lampe Halogène Webdesign Lampe IkeaJg Halogène IkeaJg c4R3jqL5A saisie.saisie_observation WHERE md.2700k Light Arbour 9w Philips Wall Led 800lm Mygarden b6gvYf7yliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Lampadaire À 1950 De Lumière Vintage 3 Bras A5RjL4