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

SQL Server:Alternatif dari pernyataan CASE panjang

Saya tidak mengharapkan masalah kinerja apa pun dari CASE pernyataan itu sendiri. Karena satu kueri Anda menghasilkan satu lintasan pada data, kinerjanya mungkin jauh lebih baik daripada beberapa kueri untuk setiap ID produk.

Kueri dapat berkinerja lebih baik dengan WHERE klausa-- jika itu mungkin dengan kueri panjang Anda.

Jika tabel besar, dan diindeks oleh id produk, dan kueri memperbarui sebagian kecil produk, Anda mungkin mendapatkan kinerja yang lebih baik dengan memecah kueri menjadi UPDATE terpisah kueri per product_id. Jika tidak, Anda mungkin berakhir dengan pemindaian tabel di atas meja besar. Misalnya:

UPDATE table SET totalAmt = a*b*c*d WHERE product_id = 1
UPDATE table SET totalAmt = c*d*e + 1 WHERE product_id = 2

Jika semua kasus bergantung pada product_id , maka Anda bisa menyingkat sintaks seperti ini:

CASE product_id
    WHEN 1 THEN a*b*c*d
    WHEN 2 THEN ...
END

Saya akan merekomendasikan menggunakan komentar untuk membuat kode lebih mudah dibaca. Misalnya, jika produk adalah kumpulan ID yang dikenal dengan hard-code, Anda dapat menentukan produk tersebut. Demikian pula, mungkin membantu pemeliharaan kode di masa mendatang untuk menjelaskan perhitungan:

UPDATE table
SET totalAmt =
    CASE WHEN product_id = 1 -- table
    THEN a*b*c*d             -- some explanation of calculation
    CASE WHEN product_id = 2 -- chair
    THEN ...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menemukan kueri paling lambat

  2. T-sql - tentukan apakah nilainya bilangan bulat

  3. Bagaimana cara memformat angka dengan koma di T-SQL?

  4. SQL Query untuk menarik nilai rata-rata untuk celah 1 hari klien

  5. Kueri SQL Server Passthrough sebagai dasar untuk kumpulan data DAO di Access