您的位置:首页 > 数据库 > MySQL

MySQL存储引擎与索引

2016-08-07 22:32 232 查看
MySQL各个索引的特性(部分)支持情况表



图 1

有些存储引擎不支持某些索引,你创建索引时指定了不支持索引类型并不会报错,会提示创建成功,此时你应该当心了,MySQL并没有真正的创建索引。

ALTER TABLE data_dict ADD INDEX data_dict_dn USING HASH (data_name);
SHOW INDEXES FROM data_dict;




你会发现并没有索引data_dic_dn

从图1中我们可以看出,

InnoDB 支持事务,支持行级别锁定,支持 B-tree、Full-text 等索引,不支持 Hash 索引;
MyISAM 不支持事务,支持表级别锁定,支持 B-tree、Full-text 等索引,不支持 Hash 索引;
Memory 不支持事务,支持表级别锁定,支持 B-tree、Hash 等索引,不支持 Full-text 索引;
NDB 支持事务,支持行级别锁定,支持 Hash 索引,不支持 B-tree、Full-text 等索引;
Archive 不支持事务,支持表级别锁定,不支持 B-tree、Hash、Full-text 等索引;
可以使用 SHOW ENGINES 语句查看你的 MySql Server 所支持的存储引擎,比如笔者用于本机测试的 5.6.25-log Win 版的查看结果如下:



可以看出,InnoDB 是该版本 MySql 的默认存储引擎,也只有 InnoDB 能够支持事务、行级别锁定、外键;支持的 MEMORY 是基于哈希的,数据都存放于内存,适用于临时表。没有看到既支持事务又支持哈希索引的 NDB 的身影。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: