Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie kann die Leistung für die Datetime-Filterung in SQL Server verbessert werden?

Nur ein Vorschlag, wenn es um Indizes für datetime in msql geht, ist, dass der Index-Fußabdruck die Suchzeiten beeinflusst (Ja, das scheint offensichtlich ... aber bitte lesen Sie weiter).

Die Wichtigkeiten dazu bei der Indizierung auf der Datumszeit sagen zum Beispiel „2015-06-05 22:47:20.102“, der Index muss jeden Ort innerhalb der Datumszeit berücksichtigen. Dies wird räumlich sehr groß und sperrig. Ein erfolgreicher Ansatz, den ich genutzt habe, besteht darin, eine neue datetime-Spalte zu erstellen und die Daten zu füllen, indem die Zeit auf die Stunde gerundet wird und dann der Index auf dieser neuen Spalte erstellt wird. Beispiel „2015-06-05 22:47:20.102“ wird zu „2015-06-05 22:00:00.000“ übersetzt. Durch diesen Ansatz lassen wir die detaillierten Daten in Ruhe und können sie anzeigen oder per Suche in dieser neuen Spalte verwenden, was uns eine (mindestens) ungefähr 10-fache Rendite in Bezug darauf gibt, wie schnell Ergebnisse zurückgegeben werden. Dies liegt daran, dass der Index die Felder Minuten, Sekunden und Millisekunden nicht berücksichtigen muss.