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

Лоша идея ли е да имаш „ИЛИ“ в състояние INNER JOIN?

Този вид JOIN не може да се оптимизира за HASH JOIN или MERGE JOIN .

Може да се изрази като конкатенация на два резултатни набора:

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

, като всеки от тях е равнопоставен, но SQL Server Оптимизаторът на 's не е достатъчно умен, за да го види в заявката, която сте написали (въпреки че са логически еквивалентни).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. EF4 - Избраната съхранена процедура не връща колони

  2. Как да добавите файл с данни към база данни на SQL Server (T-SQL)

  3. Каква е целта на използването на OPTION(MAXDOP 1) в SQL Server?

  4. Как да форматирате числа в SQL Server

  5. Какви са предимствата на VistaDB