首页 文章

使用INDEX vs.s有什么区别关键在MySQL中

提问于
浏览
144

我知道如何使用INDEX,如下面的代码 . 我知道如何使用外键和主键 .

CREATE TABLE tasks ( 
task_id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
parent_id INT UNSIGNED NOT NULL DEFAULT 0, 
task VARCHAR(100) NOT NULL, 
date_added TIMESTAMP NOT NULL, 
date_completed TIMESTAMP, 
PRIMARY KEY (task_id), 
INDEX parent (parent_id), 
....

但是我发现使用KEY而不是INDEX的代码如下 .

...
KEY order_date (order_date) 
...

我无法在MySQL官方页面中找到任何文档 .

谁能告诉我KEY和INDEX之间有什么区别?我可以看到的不同之处在于,当我使用KEY ...时,我需要重复这个词,例如KEY order_date(order_date) .

5 回答

  • 4

    没有区别 . 他们是同义词 .

    来自the CREATE TABLE manual entry

    KEY通常是INDEX的同义词 . 当在列定义中给出时,键属性PRIMARY KEY也可以被指定为KEY . 这是为了与其他数据库系统兼容而实现的 .

  • 208

    这是关于"difference"的一个很好的描述:
    http://discuss.fogcreek.com/joelonsoftware5/default.asp?cmd=show&ixPost=152398

    “MySQL要求每个Key都要编入索引,这是MySQL专用的实现细节,以提高性能 . ”

  • 4

    它被提及为'create table' docs中 INDEX 的同义词:MySQL 5.5 Reference Manual :: 13 SQL Statement Syntax :: 13.1 Data Definition Statements :: 13.1.17 CREATE TABLE Syntax

    Nos已经引用了该部分并将5.1的帮助链接起来 .

    PRIMARY KEY 为您创建主键和索引, KEY 仅创建索引 .

  • 9

    键是一组列或表达式,我们在其上构建索引 .

    • 虽然索引是存储在数据库中的结构,但键完全是逻辑概念 .

    • Index帮助我们快速访问记录,而键只是唯一地标识记录 .

    • 每个表都必须有一个键,但索引不是必需的 .

    检查https://docs.oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT721

  • 0

    键是在表中扮演非常特定角色的特殊字段,键的类型决定了它在表中的用途 .

    索引是RDBMS(数据库管理系统)提供的用于改进数据处理的结构 . 索引与逻辑数据库结构无关 .

    所以...

    键是用于标识表中记录的逻辑结构,索引是用于优化数据处理的物理结构 .

    资料来源:纯粹人类的数据库设计

    作者:Michael Hernandez

相关问题