mysql-B-Tree and Hash Indexes
2017-08-02 21:08
323 查看
今日一同事提交sql,发现如下写法USING HASH 的索引
通常都是使用默认B-Tree,为何要强制使用HASH索引呢?于是和他了解了一下,他的说法是id一般会用=来查询,使用hash会快。
我也没有使用过HASH,然后官网查了查:
https://dev.mysql.com/doc/refman/5.6/en/index-btree-hash.html#hash-index-characteristics
Hash 索引特征
Hash类型的索引有一些区别于B-Tree所述的特征:
1.它们只能用于对等比较,例如=和<=>操作符(但是快很多)。它们不能被用于像<这样的范围查询条件。假如系统只需要使用像“键值对”的这样的存储结构,尽量使用hash类型索引。
2.优化器不能用hash索引来为ORDER BY操作符加速。(这类索引不能被用于搜索下一个次序的值)
3.mysql不能判断出两个值之间有多少条数据(这需要使用范围查询操作符来决定使用哪个索引)。假如你将一个MyISAM表转为一个依靠hash索引的MEMORY表,可能会影响一些语句(的性能)。
4.只有完整的键才能被用于搜索一行数据。(假如用B-tree索引,任何一个键的片段都可以用于查找。我觉得可能意味着带通配符LIKE操作符会不起作用)。
总结说来,在某些特定场景下HASH索引会快,但是在大部分场景,其是不适用的。
参考:
http://www.jb51.net/article/62533.htm
ALTER TABLE `shop_banner` ADD INDEX `index_id` (`id`) USING HASH , ADD INDEX `index_status` (`status`) USING HASH ;
通常都是使用默认B-Tree,为何要强制使用HASH索引呢?于是和他了解了一下,他的说法是id一般会用=来查询,使用hash会快。
我也没有使用过HASH,然后官网查了查:
https://dev.mysql.com/doc/refman/5.6/en/index-btree-hash.html#hash-index-characteristics
Hash 索引特征
Hash类型的索引有一些区别于B-Tree所述的特征:
1.它们只能用于对等比较,例如=和<=>操作符(但是快很多)。它们不能被用于像<这样的范围查询条件。假如系统只需要使用像“键值对”的这样的存储结构,尽量使用hash类型索引。
2.优化器不能用hash索引来为ORDER BY操作符加速。(这类索引不能被用于搜索下一个次序的值)
3.mysql不能判断出两个值之间有多少条数据(这需要使用范围查询操作符来决定使用哪个索引)。假如你将一个MyISAM表转为一个依靠hash索引的MEMORY表,可能会影响一些语句(的性能)。
4.只有完整的键才能被用于搜索一行数据。(假如用B-tree索引,任何一个键的片段都可以用于查找。我觉得可能意味着带通配符LIKE操作符会不起作用)。
总结说来,在某些特定场景下HASH索引会快,但是在大部分场景,其是不适用的。
参考:
http://www.jb51.net/article/62533.htm
相关文章推荐
- Comparison of B-Tree and Hash Indexes
- MySql中B-Tree索引和Hash索引
- MySQL Hash索引和B-Tree索引的区别
- mysql B-tree和hash索引性能测试对比
- MySQL的B-Tree索引和Hash索引的区别
- MySQL Hash索引和B-Tree索引的区别
- mysql hash 索引 vs B-TREE 索引 理解
- 【MySQL索引】Hash索引与B-Tree索引 介绍及区别
- mysql 中hash 和 B_tree的区别
- MySQL索引-Hash索引与B-Tree索引 介绍及区别
- 获取MySQL加密密码并验证用户输入(登录界面),retrieve hashpwd from mysql and compare with input password on login
- MySQL Hash索引和B-Tree索引的区别
- 高性能MySQL - 创建高性能的索引(上)(B-Tree,Hash)
- MySQL中两种索引Hash与B-Tree的区别
- Codeforces Round #395 (Div. 1) D Timofey and a flat tree (树hash)
- Leetcode 刷题之Hash and Tree
- Mysql学习-索引总结(B-tree和hash、主键索引、唯一索引、普通索引、全文索引和组合索引)
- [数据库]MySQL Hash索引和B-Tree索引的区别
- MySQL Hash索引和B-Tree索引的区别
- mysql hash 索引 vs B-TREE 索引