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