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

Защо в плана ми за изпълнение се показва нещо?

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

В плановете за изпълнение на SQL Server Sort-Merge се разделя на два оператора, Sort и Merge-Join, тъй като операцията за сортиране може да не е необходима, например ако данните вече са сортирани.

За повече информация относно присъединяванията вижте моята поредица за присъединяване тук:http://sqlity.net/en/1146/a-join-a-day-introduction/ Статията за Sort-Merg-Join е тук:http://sqlity.net/en/1480/a-join-a-day-the-sort-merge-join/

За да направя вашата заявка по-бърза, първо ще разгледам индексите. Имате куп сканирания на клъстерен индекс в заявката. Ако можете да замените няколко от тях с търсения, най-вероятно ще бъдете по-добри. Също така проверете дали оценките, които SQL Server произвежда, съответстват на действителния брой редове в действителен план за изпълнение. Ако са далеч, SQL Server често прави лош избор. Така че предоставянето на по-добра статистика може да ви помогне да проверите и ефективността.



  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 Server (T-SQL)

  2. ModuleNotFoundError:Няма модул с име „pyodbc“ при импортиране на pyodbc в py скрипт

  3. Поставяне на безизходна жертва

  4. Грешка при възстановяване на база данни на SQL Server:посоченото предаване не е валидно. (SqlManagerUI)

  5. Функция COALESCE в TSQL