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

LEFT JOIN Значително по-бързо от INNER JOIN

Лявото присъединяване изглежда по-бързо, защото SQL е принуден първо да направи по-малкия избор и след това да се присъедини към този по-малък набор от записи. По някаква причина оптимизаторът не иска да направи това естествено.

3 начина да принудите обединяването да се случи в правилния ред:

  1. Изберете първото подмножество от данни във временна таблица (или променлива на таблица), след което се присъединете към нея
  2. Използвайте леви съединения (и не забравяйте, че това може да върне различни данни, защото това е ляво съединение, а не вътрешно съединение)
  3. използвайте ключовата дума FORCE ORDER. Имайте предвид, че ако размерите на таблиците или схемите се променят, планът на заявката може да не е правилен (вижте https://dba.stackexchange.com/questions/45388/forcing-join-order )


  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

  2. Какъв е най-добрият начин за групови вмъквания в база данни от C#?

  3. Първо подредете по конкретен идентификатор, след това по останалите

  4. Търсене на низове със заместващи символи на триграма в SQL Server

  5. Научете се да съхранявате и анализирате документи във файлова система на Windows със семантично търсене на SQL Server – част 1