Kemas Kini MySQL dengan CASE WHEN/THEN/ELSE: Mengatasi Isu Prestasi dan Kemas Kini Terpilih
Apabila bekerja dengan jadual besar, mengoptimumkan pertanyaan kemas kini menjadi penting untuk memastikan prestasi. Ciri MySQL CASE menyediakan mekanisme yang berkuasa untuk kemas kini bersyarat, tetapi menyalahgunakannya boleh mendatangkan akibat yang tidak dijangka.
Satu isu biasa возникает, seperti yang diterangkan dalam pernyataan masalah, ialah kemas kini yang tidak diingini bagi semua baris dalam jadual dan bukannya yang khusus. Ini disebabkan oleh kelakuan lalai CASE: jika tiada klausa ELSE ditentukan, semua baris tidak sepadan dengan mana-mana syarat WHEN dikemas kini kepada NULL. Ini boleh menjadi masalah untuk jadual besar, kerana ia mencetuskan kemas kini yang tidak perlu dan menekan sumber sistem.
Untuk mengelakkan isu ini, pembangun mesti menyertakan klausa ELSE secara eksplisit yang menentukan gelagat lalai untuk baris yang tidak dilindungi oleh syarat WHEN. Sebagai contoh, dalam contoh yang disediakan, menambah klausa uid ELSE memastikan bahawa semua baris yang tidak sepadan dengan mana-mana ID yang ditentukan akan mengekalkan nilai uid sedia ada mereka:
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)
Dengan mengehadkan klausa WHERE kepada yang khusus ID untuk dikemas kini, pertanyaan yang disemak ini memastikan bahawa hanya baris yang diperlukan terjejas. Pendekatan ini mengelakkan kemas kini yang berlebihan dan meminimumkan overhed prestasi sambil mengekalkan integriti data.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan MySQL CASE BILA/KEMUDIAN/ELSE Kemas Kini untuk Prestasi dan Pengubahsuaian Baris Terpilih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!