在MySQL數據庫中,主鍵是一種非常重要的概念,它可以用來保證數據完整性,同時也常常作為表中某些字段的索引。那么,MySQL主鍵可不可以做組合索引呢?
CREATE TABLE example ( id int(11) NOT NULL, name varchar(50) NOT NULL, age int(11) NOT NULL, PRIMARY KEY (id, name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
從上面的例子中,我們可以看到,採用了“PRIMARY KEY (id, name)”這樣的語法,表示這個表的主鍵是由id和name兩個字段組成的。那么,這個主鍵是不是就是一個組合索引呢?
答案是肯定的。實際上,MySQL主鍵默認就包含了索引,如果我們把主鍵設置成由多個字段組成的形式,那么這個主鍵也就自然形成了組合索引。這種情況下,MySQL數據庫也會為主鍵創建一個組合索引,用于提高查詢速度。
EXPLAIN SELECT * FROM example WHERE id = 1 AND name = 'test';
上面的語句會輸出以下結果:
+----+-------------+--------+------------+-------+---------------+---------+---------+-------+------+----------+-------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+--------+------------+-------+---------------+---------+---------+-------+------+----------+-------------+ | 1 | SIMPLE | example | NULL | const | PRIMARY | PRIMARY | 54 | const | 1 | 100.00 | Using index | +----+-------------+--------+------------+-------+---------------+---------+---------+-------+------+----------+-------------+
從這個結果可以看出,查詢使用了索引,而且是主鍵索引,效率是非常高的。
綜上所述,MySQL主鍵可以做組合索引。