Grazie Luca per la risposta.
Quindi, se ho capito bene, non esiste alcun modo per ottimizzare una ricerca di tipo %keyword% perché utilizzare un indice (sia di tipo full text che tradizionale) non evita comunque il table scan.
Inoltre ho trovato alcune stranezze con il Full Text in quanto può capitare che esistano effettivamente le parole però in realtà non le trova. Faccio un esempio:se un campo indicizzato con Full Serch contiene "Nella lampada c'è un genio." e io faccio il contains con 'genio' allora il record mi dovrebbe tornare. Invece, mentre funziona correttamente con molte parole, sembra che con altre parole non ritorni nulla oppure ritorna molti meno record di quanti in realtà ci sono. Non so se è una cosa normale oppure se ho sbagliato qualcosa nel settaggio dell'indice, ma io vorrei che quando scrivo il CONTAINS ottengo veramente tutti i record che hanno quella parola separata.
"l.bianchi [MVP]" <l.bianchi> wrote in message news:259531@...
Avrai certamente letto nella documentazione che una ricerca FT si basa su un catalogo memorizzato sul File System che viene popolato con la lista di parole contenute in uno o più campi di una tabella.
Questa struttura permette di scorrere l'elenco delle parole e, laddove viene trovata una corrispondenza con quanto stai cercando, viene utilizzato
il puntatore (costituito dalla PK) per tornare sulla tabella ed avere i record che soddisfano il criterio.
Non avere certezza di come inizia la parola che stai cercando (*keyword) significa non poter contare su alcuna indicizzazione (lo stesso vale per gli indici tradizionali) costringendo il sistema a scorrere, eventualmente,
tutto l'elenco; al contrario la ricerca della parola che inizia per una stringa nota (keyword*) permette di saltare più o meno rapidamente ad un punto specifico della struttura.
Per questo motivo non avrebbe senso soddisfare una richiesta come quella da
te prospettata accedendo ad una struttura di indice in quanto sarebbe certamente più oneroso di un table scan...
Bye
Luca Bianchi
Microsoft MVP - SQL Server
Corso LEARN&GET ASP.NET 2.0
Milano, 27 e 28 Marzo - 2 giorni di corso, licenza VS 2005, hosting 6 mesi A partire da soli 375,00 Euro IVA esclusa!
http://g.aspitalia.com/g/c/395/
Hosted by http://www.ithost.ch - your host company