mysql - 在主键和自动递增 int 的上下文中实现 INDEX 字段

标签 mysql

有人提到我需要自动递增的 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/

相关文章:

java - Java 中的动态 SQL 查询

mysql - 在 MySQL 中将多行合并为一行,无需组连接

PHP 未检测文件输入值

mysql - mysql表不再优化了吗?

MySQL DECIMAL 数据类型

php - MySQL 正确查询结果无效

MySQL - 为每个人启用安全更新

MySQL 子字符串搜索(前缀 ID)

php - PDO绑定(bind)数据类型及比较

mysql - 将数据从 MySQL 迁移到 Firebase