Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tại sao thứ tự của các mệnh đề nối lại ảnh hưởng đến kế hoạch truy vấn trong SQL Server?

Tôi phải không đồng ý với tất cả các câu trả lời trước đó và lý do rất đơn giản:nếu bạn thay đổi thứ tự của phép nối bên trái, các truy vấn của bạn sẽ khác về mặt logic và do đó chúng tạo ra các tập kết quả khác nhau. Hãy tự mình khám phá:

SELECT 1 AS a INTO #t1
UNION ALL SELECT 2
UNION ALL SELECT 3
UNION ALL SELECT 4;

SELECT 1 AS b INTO #t2
UNION ALL SELECT 2;

SELECT 1 AS c INTO #t3
UNION ALL SELECT 3;

SELECT a, b, c 
FROM #t1 LEFT JOIN #t2 ON #t1.a=#t2.b
  LEFT JOIN #t3 ON #t2.b=#t3.c
ORDER BY a;

SELECT a, b, c 
FROM #t1 LEFT JOIN #t3 ON #t1.a=#t3.c
  LEFT JOIN #t2 ON #t3.c=#t2.b
ORDER BY a;

a           b           c
----------- ----------- -----------
1           1           1
2           2           NULL
3           NULL        NULL
4           NULL        NULL

(4 row(s) affected)

a           b           c
----------- ----------- -----------
1           1           1
2           NULL        NULL
3           NULL        3
4           NULL        NULL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các ký tự thoát khỏi tìm kiếm toàn văn bản trong SQL Server?

  2. SQL Server - After Insert / For Insert - Rollback

  3. Truy vấn sql DateTime đơn giản

  4. Cách loại trừ các bản ghi có giá trị nhất định trong sql select

  5. khóa duy nhất dựa trên 2 cột trong SQl Server 2008?