SQL запрос на выборку записи из таблицы занимает много времени, но работает, как и ожидалось, когда я запускаю exe c sp_updatestats - PullRequest
1 голос
/ 29 января 2020

У меня есть таблица в SQL Server 2014, которая содержит ~ 3 лк данных, а транзакция в день - 3 тыс.

Я написал запрос для извлечения данных из другой таблицы, которая имеет некластерный индекс применяя фильтр с 4 колонками. Он работает, как и ожидалось, в течение 7-10 дней, и внезапно требуется много времени для извлечения данных.

В этой ситуации, если я запускаю exec sp_updatestats, он ответит, как ожидалось.

Теперь мой вопросы:

  1. Если я запусту exec sp_updatestats, повлияет ли это на мою существующую транзакцию, которая выполняется в БД?

  2. Что такое недостаток использования exec sp_updatestats?

  3. Есть ли альтернатива exec sp_updatestats?

1 Ответ

0 голосов
/ 29 января 2020

Объявление 1. Ваша транзакция (в строгом смысле) будет продолжена. Обновление статистики может (и, как правило, вызывает) перекомпиляцию.

Объявление 2. Обновление всей статистики (которая была автоматически создана SQL Сервером). Таким образом, он может повлиять на следующий запуск любого запроса из-за перекомпиляции

Ad 3. В вашем случае может быть достаточно запустить UPDATE STATISTICS для вашей таблицы. Вы также можете использовать его в нерабочее время, например, каждую ночь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...