Rumah >pangkalan data >tutorial mysql >Bagaimanakah Kekunci Komposit Boleh Meningkatkan Prestasi `KEMASKINI PADA KUNCI DUA` MySQL?

Bagaimanakah Kekunci Komposit Boleh Meningkatkan Prestasi `KEMASKINI PADA KUNCI DUA` MySQL?

Susan Sarandon
Susan Sarandonasal
2024-12-03 10:21:13333semak imbas

How Can Composite Keys Improve MySQL's `UPDATE ON DUPLICATE KEY` Performance?

Kekunci Komposit untuk Pertanyaan MySQL 'KEMASKINI PADA KUNCI DUA'

Apabila bekerja dengan pengecam unik berbilang lajur dalam MySQL, cabaran timbul untuk mengendalikan kedua-dua kemas kini dan sisipan. Walaupun sintaks 'KEMASKINI PADA KUNCI DUPLICATE' kelihatan seperti penyelesaian yang sesuai, ia memerlukan kunci unik untuk berfungsi.

Walau bagaimanapun, anda boleh mencipta kunci komposit daripada berbilang lajur, yang akan membenarkan 'KEMASKINI PADA KUNCI DUPLICATE' untuk berfungsi seperti yang dikehendaki. Begini cara untuk mendekati perkara ini:

Mencipta Kunci Komposit

Untuk mencipta kunci komposit, gunakan sintaks berikut:

CREATE INDEX <index_name> ON <table_name> (<column1>, <column2>);

Sebagai contoh, mari buat kunci komposit untuk jadual tiga lajur yang disebut dalam soalan:

CREATE INDEX unique_index ON my_table (col_1, col_2);

Menggunakan 'KEMASKINI ON DUPLICATE KEY'

Setelah kekunci komposit dicipta, anda boleh melaksanakan pertanyaan 'KEMASKINI PADA KUNCI PENDUPLICATE' sama ada untuk mengemas kini atau memasukkan rekod berdasarkan nilai kunci. Sintaksnya adalah seperti berikut:

INSERT INTO <table_name> (col_1, col_2, col_3) VALUES ('value1', 'value2', 'value3') ON DUPLICATE KEY UPDATE col_3=col_3+1;

Dalam pertanyaan ini, jika rekod dengan nilai col_1 dan col_2 yang ditentukan sudah wujud, col_3 akan ditambah sebanyak 1. Jika tidak, rekod baharu akan dimasukkan.

Atas ialah kandungan terperinci Bagaimanakah Kekunci Komposit Boleh Meningkatkan Prestasi `KEMASKINI PADA KUNCI DUA` MySQL?. 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