>Finalmente la domanda:
>- come posso sfruttare l'indice non-clustered per velocizzare
>la ricerca in questa situazione?
>- il metodo che ho usato per estrre le righe di una giornata
>è da somari?
Ciao bule,
La condizione "where CONVERT(varchar(25), Tempo, 105) LIKE '19-09-2006'" applica la funzione di conversione alla colonna tempo PER TUTTE LE RIGHE causando uno scan dell'intera tabella (e dato che hai definito un indice clustered, verrà scansito questo indice).
I data type datetime e smalldatetime includono sia l'informazione data che quella oraria, ma puoi elegantemente aggirare il problema restituendo tutte le righe comprese tra l'inizio e la fine della giornata (ovvero dalla mezzanotte alla mezzanotte successiva - 3.33 millissecondi per il datetime o -1 minuto per smalldatetime).
Quindi la tua query sarà:
SELECT *
FROM dbo.Principale
WHERE Tempo BETWEEN '20060919' AND '20060919 12:59:59.997'
ORDER BY id;
>grazie mille...mi dispiace della lunghezza della domanda ma in
>meno spazio non ce la faceva ad esporre questo problema..
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org