Oracle数据库中操纵索引表提高查询速度-性能调优[Oracle防范]
本文“Oracle数据库中操纵索引表提高查询速度-性能调优[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在索引表的ROWID中存储的病不是记录的实际物理地址,而是逻辑的物理地址.故有些数据库管理员把索引表中的ROWID列称为ROWID伪主键列,他存放的是表的主键信息.
1、索引表与尺度表的差别
索引表与尺度表的差别主要表目前四个方面.
一是索引表中的ROWID列存放的时主键信息,使逻辑的物理地址.而在尺度表的ROWID伪列中则存储的是真实的物理地址.这是二者之间最本质的辨别.别的其他三个方面的差别都是因为有这个差别存在而存在.也可以说,他是索引表上风的本源.
二是索引表对记录的拜候是基于主键的,也就是说,按照逻辑的ROWID.而尺度表在拜候记录的时刻,则是通过物理的ROWID地址.
三是表的扫描方法差别.若采取索引表的话,则数据库是通过全索引扫描方法反问相关的记录;而若采取尺度表的话,则是通过次序扫描的方法返回相关的记录.这二者拜候方法在性能上有很大的差别.全索引扫描方法,大概供应更高的查询性能.
四是关于主键的要求差别.在成立尺度表的时刻,不一定要指定主键.但是,若用户在成立索引表的时刻,则必须给表成立主键,利用主键来唯一表示一行记录.很简单,在索引表中,ROWID伪列中就存储着主键信息.若不指定具体的主键的话,数据拜候时就不可以对记录举行定位.
不过,索引表与尺度表的差别只是逗留在数据库开辟的层面,大概说,只是内部存储构造上有一定的差别.但是,在用户利用它们的时刻,没有任何的差别.在前台利用程序计划的时刻,用户可以向普通表那样拜候索引表.这就给索引表的利用解除了利用上的障碍.
2、索引表的上风
索引表的上风主要表目前数据查询上.并且,这个上风是十清楚显的.
一是索引表可以得到比尺度表更快的查询速度,即便这张尺度表已经成立了符合的索引.这跟索引表的存储构造是分不开的.因为索引表的数据在存储的时刻,全部的行记录都是跟排序过的主键列一同存储在数据库系统中.故在查询的时刻,只需求找到主键,就俄可以记录查询到整条记录的信息.而尺度表在数据查询的时刻,需求先找到对应的ROWID列,然后再去查询主键信息,再去查询对应的记录.所以,索引表削减了数据查询历程中的中间环节,避免了额外的数据块读取操作.
二是索引表中的记录,是按照主键摆列行排序存储的.关于主键列范围内的查询,用户可以得到更快的查询速度.这主如果因为在表格的ROWID伪列中,直接存储了主键信息.
三是操纵溢出存储功效,提高常用列的拜候速度.在后台数据库表中,大概有几十个字段.但是,前台用户在查询的时刻,常常不需求拜候全部的字段.那些用户常常要拜候的列,就叫做常用列.对常用列与不常用列辨别明显的,可以通过溢出存储功效,提高常用列的拜候速度.行将表中不常常需求拜候的非主键列不存储在B树的叶子节点中,而是存储在一个具有堆组织方法的溢出存储区中.若索引表对比大,利用溢出存储不但可以削减索引表所占用的存储空间,并且可以提高常用列的查询效率.当然,这只是针对常用列而言.若用户查询非常用列时,溢出存储就没有效果了.
3、索引表的利用机会
1、 通过关键字查询表的内容.
假如在实际利用中,大部份是通过主键列来查询其他列的信息的时刻,便可以考虑把这张表成立为索引表.
以上是“Oracle数据库中操纵索引表提高查询速度-性能调优[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |