文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络网络编程数据库通过分析SQL语句的执行计划优化SQL(一)
精品推荐
特别推荐
·用户登录存储过程
·SQL数据库完全使用手册
·进阶:精妙SQL语句介绍
·sql删除记录
·学习SQL语句之SQL语句大全
·数据备份失败的五个原因及解决办法
·解决SQL Server常见的七个经典问题
·SQL存储过程的概念,创建,调用,管理,删除,优点
热点TOP10
·SQL 新增/修改 表字段列的类型等
·MSSQL 通用分页存储过程的源码共享
·SQL数据库高级教程:学习 SQL Alias(别名)
·SQL数据进行排序、分组、统计10技巧
·讲述如何使用SQL CLR表值函数进行扩展
·轻松34步使你的 SQL 语句完全优化
·Discuz存在SQL注入漏洞会员可提升权限
·用SQL分布式管理对象创建数据库备份

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

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

        经查看执行计划,发现执行select count(id) from SWD_BILLDETAIL;使用全表扫描,执行完用了大约1.50分钟(4次执行取平均,每次分别为1.45 1.51 2.00 1.46)。而执行select count(id) from SWD_BILLDETAIL where cn <'6';却用了2个小时还没有执行完,经分析该语句使用了cn列上的索引,然后利用查询出的rowid再从表中查询数据。我为什么不使用select count(cn) from SWD_BILLDETAIL where cn <'6';呢?后面在分析执行路径的索引扫描时时会给出说明。

        下面就是基于规则的优化器使用的执行路径与各个路径对应的等级:
        RBO Path 1: Single Row by Rowid(等级最高)
        RBO Path 2: Single Row by Cluster Join
        RBO Path 3: Single Row by Hash Cluster Key with Unique or Primary Key
        RBO Path 4: Single Row by Unique or Primary Key
        RBO Path 5: Clustered Join
        RBO Path 6: Hash Cluster Key
        RBO Path 7: Indexed Cluster Key
        RBO Path 8: Composite Index
        RBO Path 9: Single-Column Indexes
        RBO Path 10: Bounded Range Search on Indexed Columns
        RBO Path 11: Unbounded Range Search on Indexed Columns
        RBO Path 12: Sort Merge Join
        RBO Path 13: MAX or MIN of Indexed Column
        RBO Path 14: ORDER BY on Indexed Column
        RBO Path 15: Full Table Scan(等级最低)

        上面的执行路径中,RBO认为越往下执行的代价越大,即等级越低。在RBO生成执行计划时,如果它发现有等级高的执行路径可用,则肯定会使用等级高的路径,而不管任何其它影响性能的元素,即RBO通过上面的路径的等级决定执行路径的代价,执行路径的等级越高,则使用该执行路径的代价越小。如上面2个例子所述,如果使用RBO,则肯定使用索引访问表,也就是选择了比较差的执行计划,这样会给数据库性能带来很大的负面影响。为了解决这个问题,从ORACLE 7开始oracle引入了基于代价的优化器,下面给出了介绍。

  基于代价的优化器 -- Cost Based Optimization(简称CBO)

        Oracle把一个代价引擎(Cost Engine)集成到数据库内核中,用来估计每个执行计划需要的代价,该代价将每个执行计划所耗费的资源进行量化,从而CBO可以根据这个代价选择出最优的执行计划。一个查询耗费的资源可以被分成3个基本组成部分:I/O代价、CPU代价、network代价。I/O代价是将数据从磁盘读入内存所需的代价。访问数据包括将数据文件中数据块的内容读入到SGA的数据高速缓存中,在一般情况下,该代价是处理一个查询所需要的最主要代价,所以我们在优化时,一个基本原则就是降低查询所产生的I/O总次数。CPU代价是处理在内存中数据所需要的代价,如一旦数据被读入内存,则我们在识别出我们需要的数据后,在这些数据上执行排序(sort)或连接(join)操作,这需要耗费CPU资源。

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



上一篇:mysql 4.1采用了新验证方法后的认证问题

下一篇:通过分析SQL语句的执行计划优化SQL(二)
相关文章:
·奇门遁甲算法分析
·光盘卫士 V1.8算法分析
·鲜为人知的Windows XP优化
·关于本地传输网络优化的问题浅析
·菜鸟必看:WinXP终极优化
·优化XP系统变量 道理在四个寓言故事中
·Flash教程:用Flash分析制作动态日历效果
相关软件:
·Windows优化精灵 V1.1
·卡耐基 心灵改造计划(上集)
·聪慧幼儿园营养分析软件v6.2
·属相分析大师 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