文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络网络编程数据库通过分析SQL语句的执行计划优化SQL(三)
精品推荐
特别推荐
·用户登录存储过程
·SQL数据库完全使用手册
·进阶:精妙SQL语句介绍
·sql删除记录
·学习SQL语句之SQL语句大全
·数据备份失败的五个原因及解决办法
·解决SQL Server常见的七个经典问题
·SQL存储过程的概念,创建,调用,管理,删除,优点
热点TOP10
·MSSQL 通用分页存储过程的源码共享
·对暴库的一点认识
·通过优化让你的SQL运行速度明显提高
·用独立的DLL来存储图片(资源文件)
·编程实例 WebGroupBox(Aspx控件)
·数据结构(C#)_排序算法(冒泡排序)
·详细介绍Oracle数据库的启动和关闭
·在DataTable中查询应该注意的问题

通过分析SQL语句的执行计划优化SQL(三)

日期:2008年5月27日 作者: 查看:[大字体 中字体 小字体]


  对于CBO优化器:
       
  CBO根据统计信息选择驱动表,假如没有统计信息,则在from 子句中从左到右的顺序选择驱动表。这与RBO选择的顺序正好相反。这是英文原文(CBO determines join order from costs derived from gathered statistics. If there are no stats then CBO chooses the driving order of tables from LEFT to RIGHT in the FROM clause.  This is OPPOSITE to the RBO) 。我还是没法证实这句话的正确性。不过经过验证:“如果用ordered 提示(此时肯定用CBO),则以from 子句中按从左到右的顺序选择驱动表”这句话是正确的。实际上在CBO中,如果有统计数据(即对表与索引进行了分析),则优化器会自动根据cost值决定采用哪种连接类型,并选择合适的驱动表,这与where子句中各个限制条件的位置没有任何关系。如果我们要改变优化器选择的连接类型或驱动表,则就需要使用hints了,具体hints的用法在后面会给予介绍。

测试:
如果我创建的3个表:
create table A(col1 number(4,0),col2 number(4,0), col4 char(30));
create table B(col1 number(4,0),col3 number(4,0), name_b char(30));
create table C(col2 number(4,0),col3 number(4,0), name_c char(30));
create index inx_col12A on a(col1,col2);

执行查询:
select A.col4
from   B, A, C
where  B.col3 = 10
and    A.col1 = B.col1
and    A.col2 = C.col2
and    C.col3 = 5;
Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=ALL_ROWS (Cost=3 Card=1 Bytes=110)
   1    0   NESTED LOOPS (Cost=3 Card=1 Bytes=110)
   2    1     MERGE JOIN (CARTESIAN) (Cost=2 Card=1 Bytes=52)
   3    2       TABLE ACCESS (FULL) OF 'B' (Cost=1 Card=1 Bytes=26)
   4    2       SORT (JOIN) (Cost=1 Card=1 Bytes=26)
   5    4         TABLE ACCESS (FULL) OF 'C' (Cost=1 Card=1 Bytes=26)
   6    1     TABLE ACCESS (FULL) OF 'A' (Cost=1 Card=82 Bytes=4756)

select A.col4
from   B, A, C
where  A.col1 = B.col1
and    A.col2 = C.col2;
Execution Plan

上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] 下一页 



上一篇:通过分析SQL语句的执行计划优化SQL(二)

下一篇:通过分析SQL语句的执行计划优化SQL(四)
相关文章:
·奇门遁甲算法分析
·光盘卫士 V1.8算法分析
·分析比较:三种简洁的Tab导航简析
·详解:FTP登陆错误问题完全分析
·通过优化让你的SQL运行速度明显提高
·万能五笔2001注册码分析及暴力破解 上
·“天音怒放”手动脱壳及破解 算法分析
相关软件:
·卡耐基 心灵改造计划(上集)
·聪慧幼儿园营养分析软件v6.2
·Windows优化精灵 V1.1
·属相分析大师 V1.0
·特别计划(Special Project Y)
·飞鹰计划(Blood Bros)
·英语句子听说大师 V2.014

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot