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

Truy vấn SQL nào nhanh hơn? Lọc theo tiêu chí Tham gia hoặc mệnh đề Where?

Về mặt hiệu suất, chúng giống nhau (và tạo ra các kế hoạch giống nhau)

Về mặt logic, bạn nên thực hiện thao tác vẫn có ý nghĩa nếu bạn thay thế INNER JOIN với LEFT JOIN .

Trong trường hợp của bạn, nó sẽ giống như thế này:

SELECT  *
FROM    TableA a
LEFT JOIN
        TableXRef x
ON      x.TableAID = a.ID
        AND a.ID = 1
LEFT JOIN
        TableB b
ON      x.TableBID = b.ID

hoặc cái này:

SELECT  *
FROM    TableA a
LEFT JOIN
        TableXRef x
ON      x.TableAID = a.ID
LEFT JOIN
        TableB b
ON      b.id = x.TableBID
WHERE   a.id = 1

Truy vấn trước đây sẽ không trả về bất kỳ kết quả phù hợp thực tế nào cho a.id khác với 1 , vì vậy cú pháp sau (với WHERE ) nhất quán hơn về mặt logic.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hạn chế kết nối SQL Server đối với một địa chỉ IP cụ thể

  2. Trả lại danh sách các bảng từ một máy chủ được liên kết trong SQL Server (ví dụ T-SQL)

  3. Brent Ozar giải thích sự phân mảnh bên trong và bên ngoài của SQL Server

  4. Xóa cấu hình thư cơ sở dữ liệu trong SQL Server (T-SQL)

  5. COS () Ví dụ trong SQL Server