Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Database/JDBC/SQL/JDO/Hibernate  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 [转]ORACLE9i新特性——索引跳跃式扫描 [精华]
C



发贴: 0
积分: 0
于 2002-08-24 03:34 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
索引跳跃式扫描(index skip scan)是ORACLE9i用来提高性能的新特性,对于使用复合索引的数据库应用程序意义尤为重大。

复合索引(又称为连接索引)是一个包含多个字段的索引。在ORACLE9i以前的ORACLE版本里,只有那些在WHERE子句里引用整个索引或者是引用索引的一个或多个前导字段的查询,才能使复合索引有效而提高检索效率。而在ORACLE9i里,一个复合索引即使在一次查询中没有使用前导字段,也可能通过“索引跳跃式扫描”被有效引用。在一次跳跃式扫描中,每个复合索引前导字段的独特值(DISTINCT VALUE)只会被搜索一次,ORACLE9i会在复合索引前导字段每个独特值区间结合WHERE子句中的其它复合索引字段搜索符合条件的目标记录,这种做法的结果导致了在索引中的跳跃式扫描。

索引跳跃式扫描主要有两个优点:
1、以前版本中的表扫描(TABLE SCAN)可能会转变为索引扫描,提高了某些查询的执行效率;
2、应用程序使用较少的索引就能达到提高效能的目的,并且既节省存储空间,又能提高DML和维护操作的效率。

假设有一个汽车注册信息的表,包含了250万条纪录,结构如下:
 
REGISTERED_OWNERS
(STATE VARCHAR2(2) NOT NULL,
REGISTRATION# VARCHAR2(10) NOT NULL,
FIRST_NAME VARCHAR2(30),
LAST_NAME VARCHAR2(30),
MAKE VARCHAR2(30),
MODEL VARCHAR2(15),
YEAR_MFG NUMBER,
CITY VARCHAR2(30),
ZIP NUMBER)


进一步假设在字段(STATE,REGISTRATION#)上存在一个复合索引,那么下面语句的执行速度会有很大提高:
SELECT first_name, last_name, zip FROM REGISTERED_OWNERS
WHERE registration# = '4FBB428'
使用索引查询速度大约可以提高90倍,在ORACLE8i(索引跳跃式扫描)中,这个查询需要21.42秒,而同样的硬件配置使用ORACLE9i只需要0.24秒。

索引跳跃式扫描非常有效,对用户和应用程序而言是透明的,并且不需要使用额外的新索引就能提高数据库的性能,有些时候甚至可以允许移除某些索引而不会对性能有太大影响。





话题树型展开
人气 标题 作者 字数 发贴时间
13762 [精华] [转]ORACLE9i新特性——索引跳跃式扫描 C 1685 2002-08-24 03:34

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923