Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server 2008, klausa WHERE berbeda dengan satu permintaan

Tidak perlu, Anda bisa menyiasatinya dengan melakukan sesuatu seperti

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

Namun, hanya karena Anda bisa melakukan sesuatu, bukan berarti Anda harus melakukannya. SQL yang kurang verbose tidak berarti kinerja yang lebih baik, jadi gunakan sesuatu seperti:

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

sementara setara dengan kueri pertama akan menghasilkan kinerja yang lebih baik karena akan dioptimalkan dengan lebih baik.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ganti nama Kunci Asing di SQL Server menggunakan T-SQL

  2. Keunggulan Kinerja SQL Server 2016 Enterprise Edition

  3. Cara mengatur kunci utama saat menautkan dengan CreateTableDef

  4. Mengubah kolom:null menjadi bukan null

  5. Kesalahan 'Harus Mendeklarasikan Variabel Skalar' Saat Melewati Parameter Bernilai Tabel ke Pernyataan SQL Berparameter