Rumah >pangkalan data >tutorial mysql >Adakah Menggunakan Penyata PILIH Berbilang Cekap untuk Menyatakan dengan Jadual Kompleks?

Adakah Menggunakan Penyata PILIH Berbilang Cekap untuk Menyatakan dengan Jadual Kompleks?

Barbara Streisand
Barbara Streisandasal
2024-12-09 05:44:10966semak imbas

Is Using Multiple SELECT Statements Efficient for Upserting with Complex Tables?

Meningkatkan dengan Jadual Kompleks: Mengemas kini Berbilang Lajur

Apabila melakukan operasi upsert dengan berbilang lajur, persoalan timbul sama ada ia cekap menggunakan berbilang pilih pernyataan dalam bahagian kemas kini. Walaupun ia boleh dilaksanakan secara teknikal, pendekatan yang lebih baik tersedia.

Pertimbangkan contoh yang diberikan:

INSERT INTO `item`
(`item_name`, items_in_stock)
VALUES('A', 27)
ON DUPLICATE KEY UPDATE
`new_items_count` = 27 + (SELECT items_in_stock where item_name = 'A')

Pertanyaan ini menambahkan kuantiti masuk dengan berkesan kepada nilai sedia ada untuk item yang ditentukan. Walau bagaimanapun, subpilihan tidak diperlukan.

Versi pertanyaan yang diperbetulkan adalah seperti berikut:

INSERT INTO `item`
(`item_name`, items_in_stock)
VALUES( 'A', 27)
ON DUPLICATE KEY UPDATE
`new_items_count` = `new_items_count` + 27

Dengan mengabaikan subpilihan, pertanyaan menggunakan keupayaan MySQL untuk merujuk baris yang mencetuskan ON DUPLICATE KEY action. Ini menghapuskan keperluan untuk penyataan pilihan tambahan dan menyelaraskan proses kemas kini.

Ingat bahawa kesederhanaan selalunya merupakan kunci kepada operasi yang cekap. Dengan mempertimbangkan pilihan yang tersedia dengan teliti dan mengelakkan kerumitan yang tidak perlu, anda boleh mengoptimumkan pertanyaan upsert anda untuk prestasi dan kebolehbacaan kod.

Atas ialah kandungan terperinci Adakah Menggunakan Penyata PILIH Berbilang Cekap untuk Menyatakan dengan Jadual Kompleks?. 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