INSERT
dan UPDATE
kinerjanya sedikit berbeda:hampir sama untuk (INT)
dan (INT, INT)
kunci.
SELECT
kinerja komposit PRIMARY KEY
tergantung pada banyak faktor.
Jika tabel Anda adalah InnoDB
, maka tabel secara implisit dikelompokkan pada PRIMARY KEY
nilai.
Itu berarti pencarian untuk kedua nilai akan lebih cepat jika kedua nilai terdiri dari kunci:tidak diperlukan pencarian kunci tambahan.
Dengan asumsi kueri Anda seperti ini:
SELECT *
FROM mytable
WHERE col1 = @value1
AND col2 = @value2
dan tata letak tabelnya adalah ini:
CREATE TABLE mytable (
col1 INT NOT NULL,
col2 INT NOT NULL,
data VARCHAR(200) NOT NULL,
PRIMARY KEY pk_mytable (col1, col2)
) ENGINE=InnoDB
, mesin hanya perlu mencari nilai kunci yang tepat di tabel itu sendiri.
Jika Anda menggunakan bidang peningkatan otomatis sebagai id palsu:
CREATE TABLE mytable (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
col1 INT NOT NULL,
col2 INT NOT NULL,
data VARCHAR(200) NOT NULL,
UNIQUE KEY ix_mytable_col1_col2 (col1, col2)
) ENGINE=InnoDB
, maka mesin perlu, pertama, mencari nilai (col1, col2)
dalam indeks ix_mytable_col1_col2
, ambil penunjuk baris dari indeks (nilai id
) dan buat pencarian lain dengan id
dalam tabel itu sendiri.
Untuk MyISAM
tabel, bagaimanapun, ini tidak ada bedanya, karena MyISAM
tabel diatur tumpukan dan penunjuk baris hanyalah offset file.
Dalam kedua kasus, indeks yang sama akan dibuat (untuk PRIMARY KEY
atau untuk UNIQUE KEY
) dan akan digunakan dengan cara yang sama.