文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程数据库通过分析SQL语句的执行计划优化SQL(二)
精品推荐
特别推荐
·SQL数据库完全使用手册
·进阶:精妙SQL语句介绍
·sql删除记录
·学习SQL语句之SQL语句大全
·数据备份失败的五个原因及解决办法
·解决SQL Server常见的七个经典问题
·SQL存储过程的概念,创建,调用,管理,删除,优点
·带你轻松接触13个数据库术语
·如何恢复系统数据库如何恢复系统数据库?
·通过实例讲解由浅入深学会存储过程
·学会三个范式快速成为数据库设计的高手
·SQL数据库应聘人员面试时经常被问的问题
·问答:查询分析器不能单步调试的的原因
·数据库基础知识:SQL中的IIF语句详解
·WindowsXP+IIS+PHP5+MySQL5+Zend+GD库+phpMyAdmin+PHPWind 5.3 安装教程
·你知道吗?优化数据库前的十大问题
·自动备份注意事项让你远离误删数据噩梦
·关于MSSQL数据库日志满的快速解决办法
·SQL安全设置攻略
·SQL注入的不常见方法
热点TOP10
·学习SQL语句之SQL语句大全
·SQL数据库完全使用手册
·玩转Windows桌面图标
·精妙SQL语句收集
·Transact SQL 常用语句以及函数
·一个简单的酒店系统的数据库设计
·sqlldr使用小结
·使用DatabaseMetaDate获取数据库信息
·WindowsXP+IIS+PHP5+MySQL5+Zend+GD库+phpMyAdmin+PHPWind 5.3 安装教程
·Delphi程序执行时实时生成报表
·图片保存到数据库和从数据库读取图片并显示(c#)
·VB.NET的数据库基础编程(1)
·SQL查询语句精华使用简要
·如何实现将vsflexgrid中修改的数据反馈到数据库中
·SQL优化34条
·SQL 新增/修改 表字段列的类型等
·还原数据库的经典做法
·通过分析SQL语句的执行计划优化SQL(二)
·通过Remoting service上传文件
·如何在GridView中一次性批量更新多行数据

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

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



        如果语句与当前在共享池中的另一个语句是等同的话,Oracle并不对它进行语法分析。而直接执行该语句,提高了执行效率,因为语法分析比较耗费资源。

        注意的是,从oracle 8i开始,新引入了一个CURSOR_SHARING参数,该参数的主要目的就是为了解决在编程过程中已大量使用的硬编码SQL问题。因为在实际开发中,很多程序人员为了提高开发速度,而采用类似下面的开发方法:
str_sql string;
int_empno int;
int_empno = 2000;
str_sql = ‘SELECT * FROM emp WHERE empno = ‘ + int_empno;
…………
int_empno = 1000;
str_sql = ‘SELECT * FROM emp WHERE empno = ‘ + int_empno;

        上面的代码实际上使用了硬编码SQL,使我们不能使用共享SQL的功能,结果是数据库效率不高。但是从上面的2个语句来看,产生的硬编码SQL只是列值不同,其它部分都是相同的,如果仅仅因为列值不同而导致这2个语句不能共享是很可惜的,为了解决这个问题,引入了CURSOR_SHARING参数,使这类问题也可以使用共享SQL,从而使这样的开发也可以利用共享SQL功能。听起来不错,ORACLE真为用户着想,使用户在不改变代码的情况下还可以利用共享SQL的功能。真的如此吗?天上不会无缘无故的掉一个馅饼的,ORACLE对该参数的使用做了说明,建议在经过实际测试后再改该参数的值(缺省情况下,该参数的值为EXACT,语句完全一致才使用共享SQL)。因为有可能该变该值后,你的硬编码SQL是可以使用共享SQL了,但数据库的性能反而会下降。 我在实际应用中已经遇到这种情况。所以建议编写需要稳定运行程序的开发人员最好还是一开始就使用绑定变量的SQL。

  Rowid的概念:
      
  rowid是一个伪列,既然是伪列,那么这个列就不是用户定义,而是系统自己给加上的。对每个表都有一个rowid的伪列,但是表中并不物理存储ROWID列的值。不过你可以像使用其它列那样使用它,但是不能删除改列,也不能对该列的值进行修改、插入。一旦一行数据插入数据库,则rowid在该行的生命周期内是唯一的,即即使该行产生行迁移,行的rowid也不会改变。

  为什么使用ROWID
     
  rowid对访问一个表中的给定的行提供了最快的访问方法,通过ROWID可以直接定位到相应的数据块上,然后将其读到内存。我们创建一个索引时,该索引不但存储索引列的值,而且也存储索引值所对应的行的ROWID,这样我们通过索引快速找到相应行的ROWID后,通过该ROWID,就可以迅速将数据查询出来。这也就是我们使用索引查询时,速度比较快的原因。

  在ORACLE8以前的版本中,ROWID由FILE 、BLOCK、ROW NUMBER构成。随着oracle8中对象概念的扩展,ROWID发生了变化,ROWID由OBJECT、FILE、BLOCK、ROW NUMBER构成。利用DBMS_ROWID可以将rowid分解成上述的各部分,也可以将上述的各部分组成一个有效的rowid。

  Recursive SQL概念
       
  有时为了执行用户发出的一个sql语句,Oracle必须执行一些额外的语句,我们将这些额外的语句称之为'recursive calls'或'recursive SQL statements'。如当一个DDL语句发出后,ORACLE总是隐含的发出一些recursive SQL语句,来修改数据字典信息,以便用户可以成功的执行该DDL语句。当需要的数据字典信息没有在共享内存中时,经常会发生Recursive calls,这些Recursive calls会将数据字典信息从硬盘读入内存中。用户不比关心这些recursive SQL语句的执行情况,在需要的时候,ORACLE会自动的在内部执行这些语句。当然DML语句与SELECT都可能引起recursive SQL。简单的说,我们可以将触发器视为recursive SQL。

  Row Source(行源)
       
  用在查询中,由上一操作返回的符合条件的行的集合,即可以是表的全部行数据的集合;也可以是表的部分行数据的集合;也可以为对上2个row source进行连接操作(如join连接)后得到的行数据集合。

  Predicate(谓词)
       
  一个查询中的WHERE限制条件

  Driving Table(驱动表)
       
  该表又称为外层表(OUTER TABLE)。这个概念用于嵌套与HASH连接中。如果该row source返回较多的行数据,则对所有的后续操作有负面影响。注意此处虽然翻译为驱动表,但实际上翻译为驱动行源(driving row source)更为确切。一般说来,是应用查询的限制条件后,返回较少行源的表作为驱动表,所以如果一个大表在WHERE条件有有限制条件(如等值限制),则该大表作为驱动表也是合适的,所以并不是只有较小的表可以作为驱动表,正确说法应该为应用查询的限制条件后,返回较少行源的表作为驱动表。在执行计划中,应该为靠上的那个row source,后面会给出具体说明。在我们后面的描述中,一般将该表称为连接操作的row source 1。

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




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

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

通过分析SQL语句的执行计划优化SQL(二) 相关文章:
·经典语句:71条人生信条
·菜鸟必看:WinXP终极优化
·提高运行速度 教你一步一步优化XP系统
·求爱宝典:爱情语句
·校园网网络方案设计及分析
·常用SQL语句词典
·学习SQL语句之SQL语句大全
·鲜为人知的Windows XP优化
·Sql server优化50法
·完全BIOS优化
通过分析SQL语句的执行计划优化SQL(二) 相关软件:
·卡耐基 心灵改造计划(上集)
·执行力就是竞争力 RMVB 余世维最新演讲
·8000英语常用语句MP3+doc 查看
·Windows优化大师V7.72 Build 7.429 正式版
·殖民计划 中文版
·winxp sp2 完全优化版 GHO 免刻录直接克隆
·3D 动画与建模:人体的综合与分析技术
·注册表优化实战练习手册(图文教程 菜鸟先飞系列教材)
·Vista优化大师V2.42 免费正式版
·系统优化大师 系统优化大师

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