- 浏览: 249859 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
liliang880504:
bitnami_redmine_merge这个数据库是创建和合 ...
bitnami-redmine服务器迁移
Hash索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以Hash索引的查询效率要远高于B-Tree索引。
可能很多人又有疑问了,既然Hash索引的效率要比B-Tree高很多,为什么大家不都用Hash索引而还要使用B-Tree索引呢?任何事物都是有两面性的,Hash索引也一样,虽然Hash索引效率高,但是Hash索引本身由于其特殊性也带来了很多限制和弊端,主要有以下这些。
(1)Hash索引仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询。
由于Hash索引比较的是进行Hash运算之后的Hash值,所以它只能用于等值的过滤,不能用于基于范围的过滤,因为经过相应的Hash算法处理之后的Hash值的大小关系,并不能保证和Hash运算前完全一样。
(2)Hash索引无法被用来避免数据的排序操作。
由于Hash索引中存放的是经过Hash计算之后的Hash值,而且Hash值的大小关系并不一定和Hash运算前的键值完全一样,所以数据库无法利用索引的数据来避免任何排序运算;
(3)Hash索引不能利用部分索引键查询。
对于组合索引,Hash索引在计算Hash值的时候是组合索引键合并后再一起计算Hash值,而不是单独计算Hash值,所以通过组合索引的前面一个或几个索引键进行查询的时候,Hash索引也无法被利用。
(4)Hash索引在任何时候都不能避免表扫描。
前面已经知道,Hash索引是将索引键通过Hash运算之后,将 Hash运算结果的Hash值和所对应的行指针信息存放于一个Hash表中,由于不同索引键存在相同Hash值,所以即使取满足某个Hash键值的数据的记录条数,也无法从Hash索引中直接完成查询,还是要通过访问表中的实际数据进行相应的比较,并得到相应的结果。
(5)Hash索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高。
对于选择性比较低的索引键,如果创建Hash索引,那么将会存在大量记录指针信息存于同一个Hash值相关联。这样要定位某一条记录时就会非常麻烦,会浪费多次表数据的访问,而造成整体性能低下。
可能很多人又有疑问了,既然Hash索引的效率要比B-Tree高很多,为什么大家不都用Hash索引而还要使用B-Tree索引呢?任何事物都是有两面性的,Hash索引也一样,虽然Hash索引效率高,但是Hash索引本身由于其特殊性也带来了很多限制和弊端,主要有以下这些。
(1)Hash索引仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询。
由于Hash索引比较的是进行Hash运算之后的Hash值,所以它只能用于等值的过滤,不能用于基于范围的过滤,因为经过相应的Hash算法处理之后的Hash值的大小关系,并不能保证和Hash运算前完全一样。
(2)Hash索引无法被用来避免数据的排序操作。
由于Hash索引中存放的是经过Hash计算之后的Hash值,而且Hash值的大小关系并不一定和Hash运算前的键值完全一样,所以数据库无法利用索引的数据来避免任何排序运算;
(3)Hash索引不能利用部分索引键查询。
对于组合索引,Hash索引在计算Hash值的时候是组合索引键合并后再一起计算Hash值,而不是单独计算Hash值,所以通过组合索引的前面一个或几个索引键进行查询的时候,Hash索引也无法被利用。
(4)Hash索引在任何时候都不能避免表扫描。
前面已经知道,Hash索引是将索引键通过Hash运算之后,将 Hash运算结果的Hash值和所对应的行指针信息存放于一个Hash表中,由于不同索引键存在相同Hash值,所以即使取满足某个Hash键值的数据的记录条数,也无法从Hash索引中直接完成查询,还是要通过访问表中的实际数据进行相应的比较,并得到相应的结果。
(5)Hash索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高。
对于选择性比较低的索引键,如果创建Hash索引,那么将会存在大量记录指针信息存于同一个Hash值相关联。这样要定位某一条记录时就会非常麻烦,会浪费多次表数据的访问,而造成整体性能低下。
发表评论
-
Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现
2016-07-22 10:20 866原文链接:http://blog.csdn.net/hil2 ... -
java计算过G文件md5 值计算
2016-07-12 10:06 659原文链接:http://www.cnblogs.com/ya ... -
Java读取文件MD5的两种方案
2016-07-12 10:04 1535原文链接:http://blog.csdn.net/wan ... -
java获取大文件的MD5、SHA1,CRC32码
2016-07-12 10:05 2217原文链接:http://blog.csdn.net/myl ... -
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
2016-06-22 19:18 508原文链接:http://blog.csdn.net/c ... -
五种不同的 URL 参数解析方法的性能比较
2016-05-19 09:40 788原文链接:http://blog.csdn. ... -
960GS
2016-04-29 08:57 609转载:http://blog.sina.com.cn/s/b ... -
GitLab版本管理
2016-02-02 09:46 733原文链接:http://www.cnblogs.com/wi ... -
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
2016-01-20 09:48 597原文地址:http://blog.csdn.net/wisg ... -
Jackson 高性能的JSON处理 ObjectMapper
2016-01-12 16:36 1403转文链接:http://blog.csdn.net/wang ... -
java之redis篇(spring-data-redis整合)
2016-01-09 13:00 1016原文链接:http://www.cnblogs. ... -
Protobuf java基础
2016-01-06 10:14 882原文地址:http://www.open- ... -
JAVA Web快速开发部署(Javarebel实现真正高效的tomcat热部署)
2016-01-03 21:41 1224原文链接:http://www.cnb ... -
linux上安装gitlab
2015-12-21 12:06 1380前言:官方上面说并不推荐在CentOS上面安装GitLab,无 ... -
linux上安装gitlab
2015-12-21 12:04 747sudo yum install curl openssh-s ... -
mysql设置指定ip远程访问连接实例
2015-11-10 09:42 771本文实例讲述了mysql设置指定ip远程访问连接的方法,分 ... -
logback中文乱码问题
2015-10-10 09:32 1799原创非转载,注意红色字体部分。 <?xml v ... -
用slf4j+logback实现多功能日志解决方案 --- 转
2015-10-09 12:06 712大家都知道,slf4j是原来log4j的作者写的一个新的日志 ... -
JPA EntityManager高级
2015-09-10 18:37 1138原文链接:http://blog.csdn.net/han_ ... -
JPA EntitManager初体验
2015-09-10 18:34 590原文链接:http://blog.csdn.ne ...
相关推荐
关于索引的介绍,以及b+树结构图,两种索引性能比较,索引优化建议
在 GPU上提出基于树层和基于节点索引键 CSB+-树两种并行构建算法,其中后者可实现对CSB+-树的最大并行度构建;通过在 CSB+-树的内部节点添加填充位的方式,可减少GPU 线程块里的线程分支数,从而提高 CSB+-树的查询...
下面小编就为大家带来一篇浅谈innodb的索引页结构,插入缓冲,自适应哈希索引。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
LSH技术即位置敏感哈希索引。 相似性搜索是一个问题,给定一个查询,目标是在所有数据库文档中找到与其最相似的文档。在数据科学中,相似性搜索经常出现在 NLP 领域、搜索引擎或推荐系统中,其中需要检索最相关的...
• 虽然哈希索引是O(1),树索引是O(log(n)),但SQL有很多“有序”需求,故数据库使用树型索引 • InnoDB不支持哈希索引 • 数据预读的思路是:磁盘读写并不是按需读取,而是按页预读,一次会读一页的数据,每次加载...
服务器上的数字内容增加了存储和获取问题。 因此,研究人员在该领域进行工作,以组织内容以实现具有数据安全性的... 结果表明,所提出的基于哈希索引和基于tem的检索模型提高了隐私性,并具有与每个查询相关的功能。
C ++哈希索引 描述 实现内存中可扩展哈希表。 项目设置 确保将项目安装在计算机上的目录中。 cd进入项目: cd project_name 运行以下命令以使用Makefile编译项目: make all 使用以下命令运行可执行主文件: ./...
为了确保云环境外包数据不受窜改,提高数据完整性审核的效率,提出一种基于相对索引散列树(RI-MHT)的数据审核方法,首先修改经典MHT的每个节点以存储两条信息,即数据块的哈希值和节点的相对索引,将MHT与节点的...
011.什么是自适应哈希索引? 012.什么是2-3树 2-3-4树? 013.说一下自增主键和字符串类型主键的区别和影响 014.使用int自增主键后 最大id是10,删除id 10和9,再添加一条记录,最后添加的id是几? 015.索引的优缺点...
文章目录前言B+树HashHash索引与B+树索引的区别总结 前言 我们都知道在MySQL中索引的数据结构有两种,一种是Hash,另一种是BTree。在数据表中建立什么样的索引需要我们根据实际情况进行选择。 B+树 B+树结构示意图:...
SQL Server 2014推出的的新索引类型叫做 hash index。介绍hash index之前一定要介绍哈希函数这样会让大家更明白哈希索引的原理,有需要的朋友可以参考下
提出一种快速的图像型垃圾邮件过滤方案,结合半监督机器学习技术改进局部敏感哈希(LSH)算法,基于改进的LSH算法构建垃圾图像特征库索引,提高图像的查找速度。搜集并构造了60 000个垃圾图像样本,实验结果表明,...
数据结构课程设计C++基于哈希表实现的通讯录系统源码+课程设计报告(95分以上).zip本系统为电话号码查找系统,本系统最频繁的操作为查询功能,查询速度的快慢对此系统有至关重要的影响,因此应该选择合适的数据结构...
Hash索引和B+树所有有什么区别或者说优劣呢? 说说什么是最左匹配? 如何优化慢查询?(explain命令) 分库分表如何选择分表键 分库分表的情况下,查询时一般是如何做排序的? mysql分库分表,水平拆分和垂直拆分,...
由于多索引哈希基于数据集中的二进制码呈均匀分布这一假设,不能有效处理非均匀分布的数据集. 针对这一问题,提出数据依赖的多索引哈希算法. 首先把二进制码划分为多个连续不重合的子串,并通过计算二进制码每位...
我们在此处提供带有哈希索引(和kNN图)的搜索代码。 该代码在我们的论文中使用。 您需要一个哈希索引和一个kmeans分区才能进行搜索。 请使用各种哈希算法来生成哈希索引和kmeans分区。 基准数据集 性能未经并行测试...
HASH 索引——用C语言实现,让你充分了解DBMS中索引的实现
为了提高移动客户机的电能使用效率,提出结合两种常用的索引技术——树索引和哈希索引的复合性索引模型。该模型既减少了移动客户机的电量消耗,延长了使用时间,同时又保证了访问时间没有大幅增加。最后用JavaSIM...
数据结构课程设计C++基于哈希表实现的通讯录系统源码+课程设计报告 本系统为电话号码查找系统,本系统最频繁的操作为查询功能,查询速度的快慢对此系统有至关重要的影响,因此应该选择合适的数据结构来进行设计。散...
学习二进制紧凑代码以用于基于哈希的指纹索引