Rumah >pangkalan data >tutorial mysql >Mengapa MyISAM MySQL Saya MENGEMASKINI dengan CASE BILA Gagal dan Bagaimana Saya Boleh Membetulkannya?

Mengapa MyISAM MySQL Saya MENGEMASKINI dengan CASE BILA Gagal dan Bagaimana Saya Boleh Membetulkannya?

Patricia Arquette
Patricia Arquetteasal
2024-11-27 18:01:11661semak imbas

Why Does My MySQL MyISAM UPDATE with CASE WHEN Fail and How Can I Fix It?

Mengemas kini Jadual MyISAM MySQL Menggunakan CASE WHEN/THEN/ELSE

S: Apabila cuba mengemas kini baris tertentu dalam jadual MyISAM yang besar menggunakan Kenyataan CASE, pertanyaan menggunakan CPU yang berlebihan dan mengemas kini semua baris, termasuk yang tidak dinyatakan. Apakah yang boleh dilakukan untuk mengehadkan kemas kini kepada baris yang dimaksudkan?

J: Isu timbul apabila pernyataan CASE tidak termasuk klausa LAIN. Secara lalai, baris yang tidak disebut secara eksplisit dalam pernyataan CASE diberikan nilai NULL. Ini mengakibatkan kemas kini yang tidak diperlukan merentas keseluruhan jadual.

Untuk menyelesaikan masalah ini, tambahkan klausa ELSE pada pernyataan CASE, memberikan nilai sedia ada lajur uid kepadanya. Ini akan menghalang kemas kini daripada menjejaskan baris yang tidak dinyatakan dalam klausa WHEN.

Selain itu, sertakan klausa WHERE untuk menyatakan secara eksplisit baris yang perlu dikemas kini. Ini memastikan bahawa hanya baris yang dikehendaki disasarkan.

Contoh:

UPDATE `table` SET `uid` = CASE
    WHEN id = 1 THEN 2952
    WHEN id = 2 THEN 4925
    WHEN id = 3 THEN 1592
    ELSE `uid`
    END
WHERE id IN (1, 2, 3)

Atas ialah kandungan terperinci Mengapa MyISAM MySQL Saya MENGEMASKINI dengan CASE BILA Gagal dan Bagaimana Saya Boleh Membetulkannya?. 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