
Oracle
索引种类:
1、B树索引
默认的“传统”索引
11、索引组织表
12、B树聚簇索引
13、降序索引
14、反向键索引
当 通过索引访问表中很少的一部分数据 或者 处理表中的多行,可以只用索引而不用表 的情况下,可以创建 B树索引
2、位图索引
对于 相异基数 低的数据,采用位图索引较为合适
3、位图联结索引
4、基于函数的索引
5、应用域索引
SQL Server
索引种类:
1、聚集索引
聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。
聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。例如,如果应用程序执行的一个查询经常检索某一日期范围内的记录,则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直到到达结束日期。这样有助于提高此类查询的性能。同样,如果对从表中检索的数据进行排序时经常要用到某一列,则可以将该表在该列上聚集(物理排序),避免每次查询该列时都进行排序,从而节省成本。
2、非聚集索引
非聚集索引与课本中的索引类似。数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置。索引中的项目按索引键值的顺序存储,而表中的信息按另一种顺序存储(这可以由聚集索引规定)。如果在表中未创建聚集索引,则无法保证这些行具有任何特定的顺序。
聚集是物理排序。而非聚集是不用将表和视图进行物理排序。
每个表或视图中最多有250个非聚集排序,或有249个非聚集排序和一个聚集排序。
1、语法
create bitmap index index_name on 表名(字段);
2、举个例子你就能明白了:
如有表 test(id,name,address)
数据
(1,张三,大连)
(2,李四,天津)
(3,王五,北京)
(4,赵六,大连)
类似这样的数据,如果查询的时候用到 where address='大连',因为数据库中有很多这样的数据,所以一般的索引起不到查询加速的作用
B树索引是一对一的,一个索引条目指向一行;
而位图索引中,所以条目非常少,每个条目指向多行,它适合一些特殊的环境;
单纯的比较他们的性能是没法比较的,因为应用的环境不一样
非唯一聚集索引和唯一聚集索引
创建两个测试表,各10000条整数,tb1唯一,tb2非唯一,有1000条为9999的重复值。
Code
先查询索引的一些基本状况:
从上面的结果可以看到,无论是叶级还是非叶级,非唯一聚集索引的索引行都比唯一的大一些,所以所占页也多一点。当然,因为测试数据很小,又是int,所以不明显。
有两大类索引:
唯一索引:
对于被索引列,索引表中每一行包含一个唯一值;
非唯一索引:
行中的索引值可重复;
从索引中读取数据的 *** 作取决于使用的索引类型和查询中访问索引的方法。
以上就是关于请问在为新项目制作数据库时可以做几种索引索引可以有几种类型全部的内容,包括:请问在为新项目制作数据库时可以做几种索引索引可以有几种类型、oracle怎么样查看索引是位图索引、比较位图索引与B+树索引的特点与区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)