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

SQL Server 2008, mệnh đề WHERE khác nhau với một truy vấn

Bạn không cần phải làm như vậy, bạn có thể vượt qua nó bằng cách làm điều gì đó như

SELECT  *
FROM    [Query]
WHERE   (@Parameter = 1 AND Column1 = 8)
OR      (@Parameter = 2 AND Column2 = 8)
OR      (@Parameter = 3 AND Column3 = 8)

Tuy nhiên, chỉ vì bạn có thể làm điều gì đó, không có nghĩa là bạn nên làm. SQL ít dài dòng hơn không có nghĩa là hiệu suất tốt hơn, vì vậy hãy sử dụng một cái gì đó như:

IF @Parameter = 1
    BEGIN
        SELECT  *
        FROM    [Query]
        WHERE   Column1 = 8
    END
ELSE IF @Parameter = 2
    BEGIN
        SELECT  *
        FROM    [Query]
        WHERE   Column2 = 8
    END
ELSE IF @Parameter = 3
    BEGIN
        SELECT  *
        FROM    [Query]
        WHERE   Column3 = 8
    END

trong khi ngang bằng với truy vấn đầu tiên sẽ dẫn đến hiệu suất tốt hơn vì nó sẽ được tối ưu hóa tốt hơn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tự động tăng chỉ mục cho Microsoft SQL Server 2008 R2

  2. Con trỏ máy chủ SQL - lặp qua nhiều máy chủ và thực thi truy vấn

  3. Lỗi SSMS 2016 khi nhập bacpac Azure SQL v12:không hỗ trợ khóa chính không có mật khẩu

  4. Ma trận phiên bản được hỗ trợ của SQL Server

  5. Lỗi cơ sở dữ liệu:Không có hàng nào ở vị trí 0