【索引分类】Hash索引
来源:互联网 发布:网络白客 编辑:程序博客网 时间:2024/05/16 01:25
HASH索引
使用HASH索引必须要使用HASH集群。建立一个集群或HASH集群的同时,也就定义了一个集群键。这个键告诉Oracle如何在集群上存储表。在存储数据时,所有与这个集群键相关的行都被存储在一个数据库块上。
如果数据都存储在同一个数据库块上,并且将HASH索引作为WHERE子句中的确切匹配,Oracle就可以通过执行一个HASH函数和I/O来访问数据——而通过使用一个二元高度为4的B树索引来访问数据,则需要在检索数据时使用4个I/O。
如下图所示,其中的查询是一个等价查询,用于匹配HASH列和确切的值。Oracle可以快速使用该值,基于HASH函数确定行的物理存储位置。
HASH索引可能是访问数据库中数据的最快方法,但它也有自身的缺点。集群键上不同值的数目必须在创建HASH集群之前就要知道。需要在创建HASH集群的时候指定这个值。低估了集群键的不同值的数字可能会造成集群的冲突(两个集群的键值拥有相同的HASH值)。这种冲突是非常消耗资源的。冲突会造成用来存储额外行的缓冲溢出,然后造成额外的I/O。如果不同HASH值的数目已经被低估,您就必须在重建这个集群之后改变这个值。
ALTER CLUSTER命令不能改变HASH键的数目。HASH集群还可能浪费空间。如果无法确定需要多少空间来维护某个集群键上的所有行,就可能造成空间的浪费。如果不能为集群的未来增长分配好附加的空间,HASH集群可能就不是最好的选择。如果应用程序经常在集群表上进行全表扫描,HASH集群可能也不是最好的选择。由于需要为未来的增长分配好集群的剩余空间量,全表扫描可能非常消耗资源。
在实现HASH集群之前一定要小心。您需要全面地观察应用程序,保证在实现这个选项之前已经了解关于表和数据的大量信息。通常,HASH对于一些包含有序值的静态数据非常有效。
技巧:HASH索引在有限制条件(需要指定一个确定的值而不是一个值范围)的情况下非常有用。
- 【索引分类】Hash索引
- Hash 索引
- 【索引分类】位图索引
- 【索引分类】分区索引
- 索引分类
- 索引分类
- 索引分类
- 索引分类
- 索引分类
- mysql索引的分类... btree hash fulltext rtree
- Hash索引和BTree索引
- Hash索引和BTREE索引
- Hash索引和BTREE索引
- 倒排索引,hash索引
- Hash索引和BTree索引
- Btree索引和Hash索引
- Hash索引和BTree索引
- 【索引分类】B树索引
- 【Lucene3.0 初窥】文本分析器Analyzer
- Android学习之 SQLite 与 ListView
- VC++实现Vista和Win7系统低权限程序向高权限程序发消息
- JProbe Suite 4.0使用说明
- 防止C++程序重复打开
- 【索引分类】Hash索引
- 提示microsoft incremental linker已停止工作解决方法
- 来个杭电的题 ---并查集 HDU 2473 Junk-Mail Filter
- Sql server 2005某用户权限设置
- Android 获取无线蓝牙MAC信息代码
- Instagram 架构分析笔记
- 解决Intel/AMD双显卡环境下Ubuntu系统过热问题
- Hibernate4之JPA规范配置详解
- java连接MYSQL