Mysql-索引


索引的作用,是提高查询速度。在MySQL中索引的实现主要是Btree|Hash,不同的数据库驱动使用了不同的实现方式。

mysql-engine-feature

截图原文地址

  • KEY | INDEX

    KEY is normally a synonym for INDEX. The key attribute PRIMARY KEY can also be specified as just KEY when given in a column definition. This was implemented for compatibility with other database systems.

那就说没有区别呗


CREATE TABLE `tbl_index`
(
    `id`  INT(10) AUTO_INCREMENT COMMENT '主键',
    `i_a` VARCHAR(20) DEFAULT '' COMMENT '参数A',
    `i_b` INT(20)     DEFAULT 0 COMMENT '参数B',
    `i_c` VARCHAR(20) DEFAULT '' COMMENT '参数C',
    `i_d` TIMESTAMP   DEFAULT NOW() COMMENT '参数D',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  CHARSET = UTF8 COMMENT '索引调试';
ALTER TABLE `tbl_index` ADD INDEX i_index (`i_a`, `i_b`);
ALTER TABLE `tbl_index` ADD KEY i_key (`i_a`, `i_b`);
show create table tbl_index \G
Create Table: CREATE TABLE `tbl_index` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
  `i_a` varchar(20) DEFAULT '' COMMENT '参数A',
  `i_b` int DEFAULT '0' COMMENT '参数B',
  `i_c` varchar(20) DEFAULT '' COMMENT '参数C',
  `i_d` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '参数D',
  PRIMARY KEY (`id`),
  KEY `i_index` (`i_a`,`i_b`),
  KEY `i_key` (`i_a`,`i_b`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='索引调试'

通过执行可以看出来他们实质上是没有区别的。如果说他们有什么其他的区别,那么可能就只有如下的区别。

key 约束 备注
primary key 主键
unique key 唯一
forigin key 外键

参考