主键位置

时间:2011-12-04 00:33:49

标签: mysql database database-design

主键是否必须是数据库表中的第一个字段?

如果我把ID放在名字之后,查询会慢吗?

CREATE TABLE users
(
    name TEXT NOT NULL,
    id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
    site INTEGER NOT NULL,
    ... 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

2 个答案:

答案 0 :(得分:4)

在数据库中使用/放置主键作为第一个字段是一般约定,但是如果将第二个字段(id)定义为主键并且它不会使查询变慢则无关紧要

答案 1 :(得分:2)

我认为这将完成之前的答案:

“每个表只能有一个AUTO_INCREMENT列,它必须被索引,并且它不能有DEFAULT值。只有当AUTO_INCREMENT列只包含正值时,它才能正常工作。插入负数被视为插入一个非常这是为了避免精确问题,当数字从正到负“包裹”时,也是为了确保你不会意外得到一个包含0的AUTO_INCREMENT列。

因此,对表中主键的位置没有限制。

希望得到这个帮助。