首页 >数据库 >mysql教程 >MySQL 中的'INDEX”和'KEY”有什么区别?

MySQL 中的'INDEX”和'KEY”有什么区别?

Susan Sarandon
Susan Sarandon原创
2024-11-24 22:37:10762浏览

What's the Difference Between `INDEX` and `KEY` in MySQL?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn