Поделиться через


sp_updatestats (Transact-SQL)

Область применения: SQL Server База данных SQL Azure

Выполняется UPDATE STATISTICS для всех определяемых пользователем и внутренних таблиц в текущей базе данных.

Дополнительные сведения см. в UPDATE STATISTICSразделе UPDATE STATISTICS. Дополнительные сведения о статистике см. в статье Статистика.

Соглашения о синтаксисе Transact-SQL

Синтаксис

sp_updatestats [ [ @resample = ] 'resample' ]

Значения кода возврата

0 (успешно) или 1 (сбой).

Аргументы

[ @resample = ] 'resample'

Указывает, что sp_updatestats использует RESAMPLE параметр инструкции UPDATE STATISTICS . Если resample это не указано, sp_updatestats обновляет статистику с помощью выборки по умолчанию. Аргумент resamplevarchar(8) со значением NOпо умолчанию.

Замечания

sp_updatestatsUPDATE STATISTICSвыполняется путем указания ключевого ALL слова во всех пользовательских и внутренних таблицах в базе данных. sp_updatestats отображает сообщения, указывающие на ход выполнения. После завершения обновления сообщается, что статистика обновляется для всех таблиц.

sp_updatestats обновляет статистику отключенных некластеризованных индексов и не обновляет статистику отключенных кластеризованных индексов.

Для таблиц sp_updatestats на основе дисков обновляет статистику на modification_counter основе сведений в представлении каталога sys.dm_db_stats_properties , обновляя статистику, в которой изменяется по крайней мере одна строка. Статистика по оптимизированным для памяти таблицам всегда обновляется при выполнении sp_updatestats. Поэтому не выполняйте sp_updatestats больше, чем необходимо.

sp_updatestats может активировать перекомпилировать хранимые процедуры или другой скомпилированный код. sp_updatestats Однако может не вызвать повторную компиляцию, если только один план запроса возможен для таблиц, на которые ссылается ссылка, и индексов на них. Повторная компиляция в этих случаях будет не нужна даже при обновлении статистики.

sp_updatestats сохраняет последний NORECOMPUTE параметр для конкретной статистики. Дополнительные сведения об отключении и повторном включении обновления статистики см. в разделе Статистика.

При восстановлении базы данных в SQL Server 2022 (16.x) из предыдущей версии необходимо выполнить sp_updatestats в базе данных. Это связано с настройкой соответствующих метаданных для функции автоматического удаления статистики, представленной в SQL Server 2022 (16.x). Функция автоматического удаления доступна в База данных SQL Azure, Управляемый экземпляр SQL Azure и начиная с SQL Server 2022 (16.x).

Разрешения

Для SQL Server необходимо быть владельцем базы данных (dbo) или членом предопределенных ролей сервера sysadmin .

Для База данных SQL Azure необходимо быть членом предопределенных ролей базы данных db_owner.

Примеры

В следующем примере обновляется статистика для всех таблиц базы данных:

USE AdventureWorks2022;
GO
EXEC sp_updatestats;

Автоматическое управление индексами и статистикой

Используйте такие решения, как Адаптивная дефрагментация индекса, для автоматического управления дефрагментацией индекса и обновлением статистики для одной или больше баз данных. С помощью линейного порогового значения эта процедура автоматически принимает решение о перестройке или реорганизации индекса в зависимости от его уровня фрагментации и других параметров, а также об обновлении статистики.