Что такое sp_updatestats
? Могу ли я запустить это в рабочей среде для повышения производительности?
Что делает exec sp_updatestats?
Ответ 1
sp_updatestats
обновляет всю статистику для всех таблиц в базе данных, где даже одна строка изменилась. Он делает это с использованием образца по умолчанию, то есть он не сканирует все строки в таблице, поэтому он, вероятно, будет производить менее точную статистику, чем альтернативы.
Если у вас есть план обслуживания с включенными индексами перестроения, он также обновит статистику, но более точную, поскольку он сканирует все строки. Нет необходимости перестраивать статистику после восстановления индексов.
Ручное обновление определенного объекта статистики или таблицы с помощью команды update statistics
дает вам гораздо лучший контроль над процессом. Чтобы автоматизировать его, посмотрите здесь.
Автоматическое обновление срабатывает только тогда, когда оптимизатор решает, что это необходимо. В 2012 году произошли изменения в математике: в 2012 году автоматическое обновление было уволено за каждые 500 + 20% изменения в строках таблицы; в 2012+ это SQRT (1000 * Таблица строк). Это означает, что он чаще встречается на больших столах. Временные таблицы ведут себя по-разному, конечно.
В заключение, sp_updatestats
может нанести больше урона, чем пользы, и является наименее рекомендуемым вариантом.