有人提到我需要自动递增的 ID 来跟踪唯一记录... ...基本上...指向自动递增 int 的 PRIMARY KEY
我可以看出这一点,因为用户数据是可变的……它会改变……如果你给每一行一个 ID,它可以作为一种更好地跟踪用户的方式,并且不会占用太多空间——4 个字节。
我还听说 INDEX 字段被用作加快搜索速度的一种方式..
如果我有一组用户属性,例如 A1、A2、A3
,并且我有一个主键 P,定义为一个 int I...INDEX 与此有何关系?..IE。我该如何正确实现?
列 -
int, varchar, varchar, varchar,....Primary Key, Index ?
I, A1, A2, A3..., P, ?
最佳答案
在 MySQL 中:
- 主键是索引
- AUTO_INCREMENT 列必须是主键
- KEY 是 INDEX 的同义词
因此在您的示例中,I
将这样声明
CREATE TABLE (
I int NOT NULL AUTO_INCREMENT,
...
PRIMARY KEY (I)
...
但是,这是一个“代理”键,因为它不是自然键(例如员工编号),所以您也有一个唯一索引(或键)
CREATE TABLE ( ...
EmployeeNumber char(7) NOT NULL,
...
UNIQUE KEY (EmployeeNumber)
...
其他索引将根据在 JOIN 和 WHERE 中的使用在单个列或列组合上创建,但索引策略通常与为表选择主键分开。
关于mysql - 在主键和自动递增 int 的上下文中实现 INDEX 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8113821/