Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come migliorare le prestazioni per il filtro datetime in SQL Server?

Solo un suggerimento quando si tratta di indici su datetime in msql è che l'impronta dell'indice influisce sui tempi di ricerca (Sì, sembra ovvio ... ma per favore continua a leggere).

L'importanza di questo quando si indicizza su datetime dicono ad esempio "2015-06-05 22:47:20.102" l'indice deve tenere conto di ogni luogo all'interno di datetime. Questo diventa molto grande spazialmente e ingombrante. Un approccio di successo che ho sfruttato è creare una nuova colonna datetime e popolare i dati arrotondando l'ora all'ora e quindi costruendo l'indice su questa nuova colonna. Esempio '2015-06-05 22:47:20.102' si traduce in '2015-06-05 22:00:00.000'. Adottando questo approccio lasciamo soli i dati dettagliati e possiamo visualizzarli o utilizzarli effettuando una ricerca su questa nuova colonna che ci fornisce circa un ritorno di 10x (almeno) sulla velocità con cui vengono restituiti i risultati. Ciò è dovuto al fatto che l'indice non deve tenere conto dei campi dei minuti, dei secondi e dei millisecondi.