MySQL 中 INDEX 和 KEY 的区别
在 MySQL 中,INDEX 和 KEY 是用于提高查询性能的同义词,它们没有本质区别。然而,出于 ISO SQL 兼容性的考虑,使用 INDEX 是首选的。
MySQL 手册中关于 CREATE TABLE 的说明指出:“KEY 通常是 INDEX 的同义词。在列定义中指定时,主键属性 PRIMARY KEY 也可以指定为 KEY。这是为了与其他数据库系统兼容而实现的。”
例如,以下三个 CREATE TABLE 语句是等效的,并在数据库中生成相同的表对象:
CREATE TABLE orders1 ( order_id int PRIMARY KEY ); CREATE TABLE orders2 ( order_id int KEY ); CREATE TABLE orders3 ( order_id int NOT NULL, PRIMARY KEY ( order_id ) );
另一方面,以下两个语句是等效的,但与以上三个语句不同:
CREATE TABLE orders4 ( order_id int NOT NULL, KEY ( order_id ) ); CREATE TABLE orders5 ( order_id int NOT NULL, INDEX ( order_id ) );
这是因为在这些语句中,KEY 和 INDEX 是 INDEX 的同义词,而不是 PRIMARY KEY。因此,KEY ( order_id ) 和 INDEX ( order_id ) 成员不会定义主键,它们只会定义一个通用索引对象,而这与 KEY 完全不同(因为它不能唯一标识一行)。
通过运行 SHOW CREATE TABLE orders1...5 命令,可以验证这一点:
CREATE TABLE orders1 ( order_id int NOT NULL, PRIMARY KEY ( order_id ) ) CREATE TABLE orders2 ( order_id int NOT NULL, PRIMARY KEY ( order_id ) ) CREATE TABLE orders3 ( order_id int NOT NULL, PRIMARY KEY ( order_id ) ) CREATE TABLE orders4 ( order_id int NOT NULL, KEY ( order_id ) ) CREATE TABLE orders5 ( order_id int NOT NULL, KEY ( order_id ) )
以上是MySQL 中的'INDEX”和'KEY”有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!