Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Защо тези статистически данни за SQL Server са остарели, когато е настроен на автоматично актуализиране?

Въпреки че сте задали статистиката за автоматично актуализиране на истина, те ще се актуализират само когато бъде достигнат праг..това е различно за различните версии

Прагове за SQL Server 2012 или по-стара версия:

  1. Размерът на таблицата е преминал от 0 на> 0 реда

  2. Броят на редовете в таблицата, когато са събрани статистическите данни, е 500 или по-малко, а colmodctr на водещата колона на статистическия обект се е променил с повече от 500 оттогава

  3. Таблицата имаше повече от 500 реда, когато статистическите данни бяха събрани, а colmodctr на водещата колона на статистическия обект се промени с повече от 500 + 20% от броя на редовете в таблицата, когато статистическите данни бяха събрани

За SQLServer 2016 има няколко основни промени и статистически данни за актуализации на SQL с нов алгоритъм (чете се по-често от старите версии)

Обикновено хората планират дейности по поддръжката през почивните дни и това включва възстановяване на индекса/актуализация на статистика.

Това обикновено трябва да се грижи за повечето бази данни. Във вашия случай, ако виждате проблеми с производителността поради невалидни статистики, можете да ги актуализирате ръчно. Правим го веднъж седмично, но сайтове като StackOverflow го правят по-често

update stats tablename

Допълнителна литература/препратки:
Статистика, използвана от оптимизатора на заявки в Microsoft SQL Server 2008
Разбиране кога статистическите данни ще се актуализират автоматично




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да прегледам всички файлове в папка с помощта на TSQL?

  2. Върнете текущото име за влизане в SQL Server (T-SQL)

  3. Освободете място в базата данни на SQL Server 2005 при премахване на таблици за постоянно

  4. Как може неклъстерен индекс да изведе колона, която не е включена в индекса

  5. Кога/Защо да използвам каскадиране в SQL Server?