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.