[原创]MySQL中Memory引擎的哈希索引_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3309 | 回复: 0   主题: [原创]MySQL中Memory引擎的哈希索引        下一篇 
tngou
注册用户
等级:中校
经验:2433
发帖:192
精华:15
注册:2014-4-28
状态:离线
发送短消息息给tngou 加好友    发送短消息息给tngou 发消息
发表于: IP:您无权察看 2014-8-5 14:44:20 | [全部帖] [楼主帖] 楼主   主页

哈希索引(Hash index)基于哈希表实现,只有精确匹配索引的所有列的查询才生效。

对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码(hash code),哈希

码是一个比较小的值,所有的列计算出来的哈希码也不一样。哈希索引将所有的哈希码

存储在索引中,同时在哈希表中保存指向每个数据行的指针。

在MySQL中,只有Memory引擎支持哈希索引。这也是Memory引擎的默认索引类型,Memory

引擎同时也支持B-Tree索引。因为索引只包括哈希值和指针,索引存储结构十分紧凑,这也让

哈希索引查找的速度非常快。然而,哈希索引也有它的限制:

1、哈希索引的数据并不是按照索引字的顺序存储的,所以就无法排序。

2、哈希索引不支持匹配查找,因为哈希值是全部内容计算出来的。

3、哈希索引不存储字段的值,所以不能所以所以中的值来避免读取行。

4、哈希索引只支持等值比较查询,包括=,IN(),<=>,也不支持范围查询。如 y>18。

5、如果索引的数据不同,那么查询的速度比较快。如果相同的比较对,速度就相应的边慢。

该贴由hui.chen转至本版2014-11-5 16:08:04




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论