Wir verwenden eine Vendor App, die unter SQL Server Enterprise ausgeführt wird, und es ist ziemlich ärgerlich, COUNT
Anweisungen in der Items-Tabelle auszuführen, während die meisten Finanzdokumente (Bestellungen, Rechnungen usw.) verarbeitet werden.
Z.B SELECT COUNT('A') FROM [dbo].[Items] T0
Ich bin mir sicher, dass das normalerweise in Ordnung wäre, aber es gibt über 6 Millionen Datensätze, und es dauert ungefähr 400 ms, um sie alle zu zählen. Dies kann einen wesentlichen Teil der gesamten Verarbeitungszeit ausmachen.
Die Tabelle enthält bereits einen extrem engen NonClustered-Index (tinyint plus Clustered Key), den SQL beim Tabellenscan verwendet. Ich denke, wir können diesbezüglich keine besseren Ergebnisse erzielen.
Mir sind einige Lösungen bekannt, die wir nach Möglichkeit vermeiden möchten:
- Indizierte Ansicht mit
COUNT_BIG(*)
- Verwenden Sie schnellere Prozessoren - wir verwenden Cloud-Server, und diesbezüglich gibt es nur sehr begrenzte Optionen.
- Datensätze löschen - in diesem Fall keine Option.
Haben wir andere Möglichkeiten, dies zu beschleunigen?
Hier ist eine Übersicht über das Setup: https://gist.github.com/elvishfiend/5094f120b14f8ecfb325623edcb5f3eb