Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Czy posiadanie „LUB” w warunku INNER JOIN to zły pomysł?

Ten rodzaj JOIN nie można zoptymalizować do HASH JOIN lub MERGE JOIN .

Można to wyrazić jako połączenie dwóch zestawów wyników:

SELECT  *
FROM    maintable m
JOIN    othertable o
ON      o.parentId = m.id
UNION
SELECT  *
FROM    maintable m
JOIN    othertable o
ON      o.id = m.parentId

, przy czym każdy z nich jest equijoin, jednak SQL Server Optymalizator nie jest wystarczająco sprytny, aby zobaczyć to w zapytaniu, które napisałeś (chociaż są one logicznie równoważne).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dynamiczny SQL a procedura składowana

  2. Jak przenieść tabelę do schematu w T-SQL?

  3. Jak wyłączyć wszystkie ograniczenia sprawdzania w bazie danych SQL Server — samouczek SQL Server / TSQL, część 87

  4. Wyświetlanie historii zadań agenta programu SQL Server za pomocą usługi Azure Data Studio

  5. Błąd potwierdzenia uzgadniania uzgadniania przed logowaniem w programie SQL Server