[postgresql-it] Prestazioni e indicizzazioni

  • From: Marco Pasqualini <marco.pasqualini@xxxxxxxxxx>
  • To: "postgresql-it@xxxxxxxxxxxxx" <postgresql-it@xxxxxxxxxxxxx>
  • Date: Wed, 03 Jun 2009 18:11:13 +0200

Ciao,

una domanda generica di "approccio":

ho la mia solita tabella "search" formata da una trentina di campi, nell'ordine del milione di record,
l'utente (tramite il sito pubblico in php) compie su di essa varie ricerche.
Le ricerche possono essere effettuate su uno o più campi tra i quali:
"i_text" : indicizzato in gin e formato da stringhe di tipo tsearch, si compiono ricerche testuali
"location" : campo normale character varying(250), contiene una stringa (esempio milano) e su questo campo si fa una select con uguaglianza stretta
"category" : campo normale character varying(250), contiene una stringa (esempio appartamento) e su questo campo si fa una select con uguaglianza stretta
"contract": campo normale character varying(250), contiene una stringa (esempio affitto) e su questo campo si fa una select con uguaglianza stretta

come vedete per adesso ho indicizzato solo il primo campo i_text
dovendo accelerare le prestazioni sto cercando la maniera migliore per indicizzare anche gli altri campi
parlando coi colleghi si sono aperte varie ipotesi:

1 - accorpare i 4 campi in uno unico indicizzato: i valori di location, category e contract sono preceduti da un prefisso standard (esempio loc_milano). quindi tutte le ricerche operano alla fine su uno stesso campo (qui però avrei alcuni valori in to_tsquery e altri no...)

2 - fare un indice separato per ciascuno degli altri 3 campi non ancora indicizzati

4 - fare un indice composto su tutti e 4 i campi


secondo voi qual'è la soluzione più performante?


Grazie

Marco

Other related posts:

  • » [postgresql-it] Prestazioni e indicizzazioni - Marco Pasqualini