Я использую SQL SERVER 2012
мое Auto Update Stats
ON в моей базе данных.
Из ссылки ниже я узнал, что статистика автоматического обновления будет срабатывать при каждом SQRT(1000 * Table rows)
изменении строк таблицы.
https://blogs.msdn.microsoft.com/srgolla/2012/09/04/sql-server-statistics-explained/
Я создал таблицу с 1000 записей
SELECT TOP 500 Row_number()OVER (ORDER BY (SELECT NULL)) rn,
name
INTO stst
FROM sys.objects
Создание статистики
CREATE STATISTICS rn
ON stst (rn)
CREATE STATISTICS name
ON stst (name)
Проверка созданной статистики
DBCC show_statistics('stst', rn) -- Rows 500
DBCC show_statistics('stst', name) -- Rows 500
По формуле
select SQRT(1000 * 500) -- 707.106781186548
Так что, если я добавлю / изменим 707.106781186548
записи в моей таблице, автоматическое обновление статистики должно сработать
Добавьте 1000
больше записей в мою таблицу, которых должно быть более чем достаточно, чтобы выстрелитьauto update stats
INSERT INTO stst(rn,name)
SELECT TOP 1000 Row_number()OVER (ORDER BY (SELECT NULL)) rn,
a.name
FROM sys.objects a
Уволить auto update stats
Select * from stst
Проверка статистики
DBCC show_statistics('stst', rn) -- Rows 500
DBCC show_statistics('stst', name) -- Rows 500
К сожалению , до сих пор Rows
является 500
только.
Даже после вставки 1000
записей в мою таблицу, что явно больше, чем 707.106781186548
при выполнении, SELECT
почему статистика автоматического обновления не срабатывает? Что мне здесь не хватает