Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan INSERT MySQL Menggunakan 'PADA KEMASKINI KUNCI DUA'?

Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan INSERT MySQL Menggunakan 'PADA KEMASKINI KUNCI DUA'?

Patricia Arquette
Patricia Arquetteasal
2024-12-09 01:23:10293semak imbas

How Can I Optimize MySQL INSERT Queries Using

Mengoptimumkan Pertanyaan INSERT dengan "ON DUPLICATE KEY UPDATE"

Sistem pangkalan data MySQL menyediakan klausa "ON DUPLICATE KEY UPDATE" untuk mengendalikan senario apabila percubaan untuk memasukkan rekod dengan kunci utama pendua mencetuskan operasi kemas kini. Artikel ini meneroka cara memanfaatkan klausa ini untuk mencapai kemas kini yang cekap dan ringkas.

INSERT Standard dengan Spesifikasi Medan Penuh

Apabila cuba memasukkan rekod dengan kunci pendua, anda boleh menggunakan untuk menentukan semua nilai medan dalam "KEMASKINI KUNCI PENDULIKASI" klausa:

INSERT INTO table (id, a, b, c, d, e, f, g)
VALUES (1, 2, 3, 4, 5, 6, 7, 8)
ON DUPLICATE KEY UPDATE a=2, b=3, c=4, d=5, e=6, f=7, g=8;

Walaupun pendekatan ini memastikan semua medan dikemas kini dengan betul, ia memerlukan spesifikasi berlebihan nilai yang telah disediakan dalam sisipan awal.

Menggunakan Nilai Medan daripada INSERT Statement

Untuk mengelakkan lebihan, anda boleh memanfaatkan "VALUES()" sintaks dalam klausa "KEMASKINI KUNCI PENDUPLICATE":

INSERT INTO table (id, a, b, c, d, e, f, g)
VALUES (1, 2, 3, 4, 5, 6, 7, 8)
ON DUPLICATE KEY UPDATE a=VALUES(a), b=VALUES(b), c=VALUES(c),
                              d=VALUES(d), e=VALUES(e), f=VALUES(f), g=VALUES(g);

Sintaks ini merujuk nilai asal daripada penyataan sisipan, mengelakkan keperluan untuk menyatakannya semula.

Kemas Kini Berlebihan dan pertimbangan LAST_INSERT_ID

Adalah penting untuk ambil perhatian bahawa jika nilai medan sedia ada sepadan dengan yang baharu, MySQL tidak akan melakukan sebarang kemas kini. Oleh itu, adalah penting untuk mempertimbangkan sama ada semua medan sebenarnya perlu dinyatakan dalam klausa "KEMASKINI KUNCI PENDUPLICATE".

Selain itu, mendapatkan ID yang dijana oleh LAST_INSERT_ID() mungkin memerlukan pengendalian tambahan, bergantung pada bahagian belakang tertentu aplikasi atau perisian tengah yang anda gunakan. Dalam kes tertentu, anda mungkin perlu menanyakan pangkalan data secara berasingan untuk mendapatkan ID yang terakhir dimasukkan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan INSERT MySQL Menggunakan 'PADA KEMASKINI KUNCI DUA'?. 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