Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengoptimumkan Kemas Kini Penyata CASE dalam SQL Server 2005 untuk Mengelakkan Imbasan Jadual Penuh?

Bagaimana untuk Mengoptimumkan Kemas Kini Penyata CASE dalam SQL Server 2005 untuk Mengelakkan Imbasan Jadual Penuh?

Barbara Streisand
Barbara Streisandasal
2024-12-26 02:59:08979semak imbas

How to Optimize CASE Statement Updates in SQL Server 2005 to Avoid Full Table Scans?

Pengoptimuman Kemas Kini Penyata KES dalam SQL Server 2005

Soalan Asal:

Cara mengemas kini rekod secara selektif menggunakan pernyataan CASE dalam SQL Server 2005 tanpa mengimbas semua tidak terjejas baris?

Konteks:

Pernyataan CASE berikut digunakan untuk mengemas kini nilai tertentu dalam lajur LASTNAME bagi jadual dbo.TestStudents:

UPDATE dbo.TestStudents SET LASTNAME = 
( CASE 
WHEN (LASTNAME = 'AAA') THEN 'BBB' 
WHEN (LASTNAME = 'CCC') THEN 'DDD' 
WHEN (LASTNAME = 'EEE') THEN 'FFF' 
ELSE (LASTNAME)
END )

Walaupun kenyataan ini mencapai tujuan yang diingini, keadaan ELSE memerlukan pengimbasan semua baris dalam jadual.

Penyelesaian:

Untuk mengelakkan mengimbas baris yang tidak terjejas, klausa WHERE boleh ditambah pada pernyataan untuk menentukan baris mana yang perlu dikemas kini.

UPDATE dbo.TestStudents SET LASTNAME = CASE 
WHEN LASTNAME = 'AAA' THEN 'BBB' 
WHEN LASTNAME = 'CCC' THEN 'DDD' 
WHEN LASTNAME = 'EEE' THEN 'FFF' 
ELSE LASTNAME
END 
WHERE LASTNAME IN ('AAA', 'CCC', 'EEE')

Dengan menyatakan nilai LASTNAME untuk dikemas kini dalam klausa WHERE, pernyataan itu hanya mengemas kini yang terjejas baris dan membiarkan baris lain tidak berubah.

Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan Kemas Kini Penyata CASE dalam SQL Server 2005 untuk Mengelakkan Imbasan Jadual Penuh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn