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

Изпълнението на същата SQL заявка отнема повече време в една DB, отколкото друга DB под същия сървър

Фактът, че имате две бази данни на един и същи сървър и с един и същ набор от данни (както казахте), не гарантира същия план за изпълнение.

Ето някои от причините, поради които планът на заявката може да е различен:

  • mdf и ldf файловете (за всяка база данни) са на различни дискове. Ако onedrives е по-бърз, тази база данни също ще изпълнява заявката по-бързо.
  • спряна статистика. Ако имате една база данни с по-нова статистика от другата, SQL има по-добри шансове да избере правилен (и
    по-бърз) план за изпълнение.
  • Индекси:Знам, че казахте, че и двата са идентични, но бих проверил дали имате един и същи тип индекси и на двата.

Съсредоточете се върху това да видите защо заявката се изпълнява бавно или да видите действителния план за изпълнение, вместо да сравнявате. Проверката на действителния план за изпълнение на бавната заявка ще ви даде намек защо работи по-бавно.

Освен това не бих добавил оператор NO LOCK, за да коригирам проблема. Според моя опит повечето бавни заявки могат да бъдат настроени чрез код или индекс, вместо добавяне на подсказка NO LOCK, която може да ви доведе до модифицирани или стари набори от резултати, в зависимост от вашите транзакции.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Експортирайте данни от SQL заявка в Excel

  2. Как SQLParameter предотвратява SQL инжекцията?

  3. Най-доброто решение за пейджинг, използващо SQL Server 2005?

  4. Има ли SVN плъгин за SQL Server Management Studio 2005 или 2008?

  5. Намерете всички екземпляри на SQL Server в локалната мрежа