是否可以将id
(自动递增)作为MySQL主键的第二列?见下面的order
表。
我的想法是,当我使用orders
查询order
表时,MySQL通过主键索引(customer_id,id)访问customer_id
会更快。谢谢
Customer
+-------------+
| id (autoinc)| --> primary key
|- - - - - - -|
| name |
| address |
+-------------+
|
|
|
A
Order
+------------------+
| customer_id (fk) | --- primary key
| id (autoinc) | --- primary key
|- - - - - - - - - |
| date |
+------------------+
答案 0 :(得分:1)
您可以使用下面的表格语法执行此操作,但我不确定您将获得哪些性能优势。我会调查并更新我的答案。
CREATE TABLE your_table (a INT NOT NULL, b INT NOT NULL AUTO_INCREMENT UNIQUE);
ALTER TABLE your_table ADD PRIMARY KEY (a, b);
但是,你不能将UNIQUE
键放在b。
答案 1 :(得分:0)
以gr1zzly be4r的答案为基础......
InnoDB实际上允许您使用自动增量作为任何KEY的第一列,而不一定只是一个唯一的键。
CREATE TABLE `your_table` (
`a` int(11) NOT NULL,
`b` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`a`,`b`),
KEY `b` (`b`)
) ENGINE=InnoDB;
INSERT INTO your_table (a) VALUES (42), (43);
SELECT * FROM your_table;
+----+---+
| a | b |
+----+---+
| 42 | 1 |
| 43 | 2 |
+----+---+
换句话说,b
列不一定是唯一的。