mysql-B-Tree and Hash Indexes
来源:互联网 发布:淘宝的xbox手柄 编辑:程序博客网 时间:2024/05/18 01:20
今日一同事提交sql,发现如下写法USING HASH 的索引
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
阅读全文
0 0
- mysql-B-Tree and Hash Indexes
- Understanding B+tree indexes
- B-Tree Indexes
- Understanding B+tree Indexes and how they Impact Performance
- mysql hash 索引 vs B-TREE 索引
- MySQL Hash索引和B-Tree索引的区别
- MySQL中两种索引Hash与B-Tree的区别
- mysql hash 索引 vs B-TREE 索引 理解
- [数据库]MySQL Hash索引和B-Tree索引的区别
- MySQL Hash索引和B-Tree索引的区别
- mysql B-tree和hash索引性能测试对比
- mysql索引->HASH索引和B-Tree索引
- MySQL Hash索引和B-Tree索引的区别
- Mysql的Hash索引与B-Tree索引
- (六)2.4 Mysql Hash索引和B-tree索引区别
- MySQL的B-Tree索引和Hash索引的区别
- mysql索引:b tree索引和hash索引的区别
- MYSQL Hash 和B-Tree索引的区别
- 关于前端脚手架yeoman的使用
- Java 7之基础
- 再谈FFT,不过如此。应该是这个题简单
- UML类图几种关系的总结
- DDR的几个概念
- mysql-B-Tree and Hash Indexes
- js框架与库的区别
- nyoj 20 吝啬的国度【dfs+vector存图】
- 机器学习和深度学习提问题的好地方
- unity5 动画播放结束都有延迟的问题
- POJ.2299 Ultra-QuickSort (线段树 单点更新 区间求和 逆序对 离散化)
- Replugin Demo的简单使用与分析(一)
- hdu 5904 LCIS
- HDU-1242 Rescue( 广搜 + 优先队列)