SQL SERVER 2012
Ich benutze Ich habe mein Auto Update Stats
ON in meiner Datenbank.
Über den folgenden Link habe ich erfahren, dass die Auto-Update-Statistiken für jede SQRT(1000 * Table rows)
Änderung in Tabellenzeilen ausgelöst werden.
https://blogs.msdn.microsoft.com/srgolla/2012/09/04/sql-server-statistics-explained/
Ich habe eine Tabelle mit 1000 Datensätzen erstellt
SELECT TOP 500 Row_number()OVER (ORDER BY (SELECT NULL)) rn,
name
INTO stst
FROM sys.objects
Statistiken erstellen
CREATE STATISTICS rn
ON stst (rn)
CREATE STATISTICS name
ON stst (name)
Überprüfen der erstellten Statistiken
DBCC show_statistics('stst', rn) -- Rows 500
DBCC show_statistics('stst', name) -- Rows 500
Nach der Formel
select SQRT(1000 * 500) -- 707.106781186548
Wenn ich also 707.106781186548
Datensätze in meiner Tabelle hinzufüge / ändere, sollte die automatische Aktualisierungsstatistik ausgelöst werden
Fügen Sie 1000
meiner Tabelle weitere Datensätze hinzu, die mehr als genug sein sollten, um ausgelöst zu werdenauto update stats
INSERT INTO stst(rn,name)
SELECT TOP 1000 Row_number()OVER (ORDER BY (SELECT NULL)) rn,
a.name
FROM sys.objects a
Um die zu feuern auto update stats
Select * from stst
Überprüfen der Statistiken
DBCC show_statistics('stst', rn) -- Rows 500
DBCC show_statistics('stst', name) -- Rows 500
Leider immer noch das Rows
ist 500
nur.
Selbst nach dem Einfügen von 1000
Datensätzen in meine Tabelle, was offensichtlich größer ist als 707.106781186548
beim Ausführen, SELECT
warum die Auto-Update-Statistiken nicht ausgelöst wurden. Was fehlt mir hier?