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

SQL Server:IF EXISTS масово забавя заявка

Опитахте ли да стартирате оригиналната заявка с TOP 1? най-вероятно ще бъде също толкова бавно.

Понякога, когато оптимизаторът смята, че нещо е много вероятно и ще върне огромен набор от данни с малко усилия (т.е. почти всички записи ще бъдат върнати), той избира най-вече циклични съединения, защото трябва да получи само първия и loop join е добро само за получаване на няколко записа. Когато това се окаже, че не е вярно, отнема цяла вечност и един ден, за да получите резултати.

Във вашия случай звучи като много рядко, така че този избор боли много. Опитайте вместо това да направите нещо като SELECT @count = COUNT(*) FROM ... и след това проверка дали този брой е различен от нула.



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

  2. Използване на изходен параметър от съхранена процедура на SQL Server в Access

  3. Навигиране в регистрационните файлове за грешки на SQL Server

  4. Обектът не можа да бъде пуснат, защото е препратен от ограничение ВЪНШЕН КЛЮЧ - SQL Server / TSQL Урок, част 74

  5. Грешка при аритметично препълване при преобразуване на израз в тип данни int