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
Lepaskan: 2024-12-09 01:23:10
asal
299 orang telah melayarinya

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;
Salin selepas log masuk

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);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan