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

SQL JOIN so với IN hiệu suất?

Nói chung, INJOIN là các truy vấn khác nhau có thể mang lại các kết quả khác nhau.

SELECT  a.*
FROM    a
JOIN    b
ON      a.col = b.col

không giống như

SELECT  a.*
FROM    a
WHERE   col IN
        (
        SELECT  col
        FROM    b
        )

, trừ khi b.col là duy nhất.

Tuy nhiên, đây là từ đồng nghĩa với truy vấn đầu tiên:

SELECT  a.*
FROM    a
JOIN    (
        SELECT  DISTINCT col
        FROM    b
        )
ON      b.col = a.col

Nếu cột tham gia là UNIQUE và được đánh dấu như vậy, cả hai truy vấn này đều mang lại cùng một kế hoạch trong SQL Server .

Nếu không, thì IN nhanh hơn JOIN trên DISTINCT .

Xem bài viết này trong blog của tôi để biết chi tiết về hiệu suất:

  • IN so với JOIN so với EXISTS


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để kết nối với SQL Server bằng cách sử dụng bảo mật tích hợp với trình điều khiển JDBC?

  2. Trong SQL Server, làm cách nào tôi có thể tìm thấy ở mọi nơi một cột được tham chiếu?

  3. Làm thế nào tôi có thể biết khi nào Tổng số chỉ mục văn bản đầy đủ của SQL kết thúc?

  4. Tạo một ngày từ tháng và năm với T-SQL

  5. 5 mẹo hữu ích nhanh cho SQL Server Production DBAs