什么是索引?
非聚集索引 采用B+树 记录与索引分开
主要用于提高查询效率,也就是按条件查询的时候,先查询索引,再通过索引找到相关的数据,索引相当于记录了对某个关键词,指定到不同的文件,或者文件里的不同位置,当然索引自身也是通过文件来保存的。索引这个概念其实已经在很多地方用到过了,文件系统,内存,等等,学过操作系统的应该都不会陌生。
索引在数据库中分类及用法
索引在数据库中和在文件系统中就大不一样了,在文件系统和数据库中都分有顺序索引,hash索引,
但是在数据库中多了位图索引(请指正,这里可能不对,只是个人对于操作系统的记忆)。
下面具体说说数据库中的情况
顺序索引,一般是使用B+树,这个是B树的变种,B树的变种另外还有B-树和B*树。
---聚集索引 采用B-树,记录与索引值在一起
hash索引,这个用的比较少,oracle中好像没有吧...
位图索引,位图索引是一种针对多个字段的简单查询设计一种特殊的索引,适用范围比较小,只适用于字段值固定并且值的种类很少的情况,比如性别,只能有男和女,或者级别,状态等等,并且只有在同时对多个这样的字段查询时才能体现出位图的优势。
总结:
B+树最常用,性能也不差,用于范围查询和单值查询都可以。特别是范围查询,非得用B+树这种顺序的才可以了。
HASH的如果只是对单值查询的话速度会比B+树快一点,但是ORACLE好像不支持HASH索引,只支持HASH表空间。
位图的使用情况很局限,只有很少的情况才能用,一定要确定真正适合使用这种索引才用(值的类型很少并且需要复合查询),否则建立一大堆位图就一点意义都没有了。
B+树最常用,性能也不差,用于范围查询和单值查询都可以。特别是范围查询,非得用B+树这种顺序的才可以了。
HASH的如果只是对单值查询的话速度会比B+树快一点,但是ORACLE好像不支持HASH索引,只支持HASH表空间。
位图的使用情况很局限,只有很少的情况才能用,一定要确定真正适合使用这种索引才用(值的类型很少并且需要复合查询),否则建立一大堆位图就一点意义都没有了。