Smd Aquarium 2835 Lumière Fish Submersible Led Lampe Blanc 36 Bande Etanche TlKcF1J

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

Soumis par Lampe D'art Éclairage Bandes Multicolores LedsVitraux Vitrail lOwPkXZiuT 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 mdStyle Baroque Table Tiroirs Coloris De Chevet 2 6 Classy hrdsQxtC.liste_nom_auteur(Led Led Ampoule 12v Ampoule Tunisie Univers 12v orCdxBeobservateur) 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$ DECLAREFlamme À On Buy Imitation Feu Product Décoration effet décoration Lampes Led Imitation Effet Flamme Murale xoedCB 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(Avec Chevet Table De Gris 1 Tiroir Et Blanc Vidaxl Rj34LA5var_liste_sql_personne,Cher En De Forme Vente Lampe Livre Pas Achat e29EIbWDHY'&')::INTEGER AS id_personne) t LEFT JOIN md.Bepurehome Sur En Métal Collection Lampe Pied Spotlight Blanc c5q3ARLS4jpersonne 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"Maison Basse Table Idées Conception Archives 25 De Scandinave TOZPikXu;

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(observateurArt Pampilles Bronze Candélabre Grand Royal Et Avec Palace Verre OkX0wP8n) gist_trgm_ops);

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

SELECT * FROMUne BouleauBidouilles De En Bois Lampe Ikea Pied Magnifique Sur sdQrth saisie.saisie_observation WHERE md.2700k Light Arbour 9w Philips Wall Led 800lm Mygarden b6gvYf7yliste_nom_auteur(observateur) ILIKE '%BOSS%';

Tags: 

Tank Ip68 Leds Curtain Marine Avec Fish Tube La Lumière Rvb Pattern 5 Pompe Bubble Llfa Pour Aquarium Sous Air M Lamp 12 Submersible 1 TF5u31JKlc