Chinaunix
标题:
oracle sql语句优化
[打印本页]
作者:
chen_hy
时间:
2010-08-02 20:40
标题:
oracle sql语句优化
各位大虾,小弟最近在看<oracle 高性能sql调整>这本书,想研究一下
怎么写高效率的sql语句.有些地方不是很明白,请各位指教.
1.oracle执行计划是一个什么概念?是不是一条语句就有一个唯一的执行计划?
2.sql语句的执行能跟踪吗?
3.这本书是基于oracle 8i写的,对现在最新的oracle版本还适用吗?
4.这本书应该怎么读?sql语句优化的一般步骤是怎样的?
小弟是菜鸟级的,请各位多指教.谢谢.
作者:
renxiao2003
时间:
2010-08-02 20:54
2,是可以跟踪的。
3,可以参照,新版本是有改变的。
作者:
chen_hy
时间:
2010-08-04 20:18
怎么察看sql语句的执行计划?谢谢.
作者:
super5281
时间:
2010-08-04 20:30
学习Oracle最好还是从低版本学习,直接学习高版本,一点点演变出来的新特性都不知道怎么出来的
作者:
djxiangrikui
时间:
2010-08-15 11:17
sql>set autotrace on: 语句执行后显示执行计划和统计信息
作者:
tt53
时间:
2010-08-16 17:04
回复
3#
chen_hy
这种问题你Google一下不就有了吗
比到这里问快都了吧
作者:
renxiao2003
时间:
2010-08-16 17:14
怎么察看sql语句的执行计划?谢谢.
chen_hy 发表于 2010-08-04 20:18
用plsql developer就能看到。按F5键。
作者:
duolanshizhe
时间:
2010-08-19 08:47
一个个来啊:
1.oracle执行计划是一个什么概念?是不是一条语句就有一个唯一的执行计划?
一条语句可以有多个执行计划。比如你从北京去上海,你有多种选择:可以火车,也可以汽车也可以飞机;你会根据自己的喜好和时间、成本来考虑的。
oracle语句也一样,当你发出一条语句之后,oracle引擎进行分析,解析,然后根据“相关信息”产生执行计划。
这里的相关信息会根据版本不同,比如9i之前只有rbo的优化器,那就会根据预定的规则,来选择执行计划,比如有索引就会优先使用索引,而不考虑实际获取数据量的大小和表的总的数据量大小;这样有时候就会误判。
对于9i之后,oracle引入了cbo的优化器,会根据统计信息来评价每个执行计划的成本,然后找出最低成本的执行计划作为最优的执行计划。
作者:
duolanshizhe
时间:
2010-08-19 08:48
具体到执行计划:
就是多个表之间的访问先后顺序,以及单个表采取哪个访问方式,以及表之间的连接关系!
作者:
duolanshizhe
时间:
2010-08-19 08:49
2.sql语句的执行能跟踪吗?
sql语句当然可以跟踪,不但可以跟踪处该语句的执行计划,还可以看出底层基础表的访问情况!
作者:
duolanshizhe
时间:
2010-08-19 08:51
3.这本书是基于oracle 8i写的,对现在最新的oracle版本还适用吗?
有些方面还有一定的参考价值,毕竟oracle的核心算法还是变化比较小,但是8i主要讨论的是rbo,在10g中已经被抛弃了,所以建议楼主批判接收,以免误导!
作者:
duolanshizhe
时间:
2010-08-19 08:54
4.这本书应该怎么读?sql语句优化的一般步骤是怎样的?
这本书很多基本概念还是不错的,可以了解
对于sql语句的优化,每个人都有自己的步骤和观点:
本人认为,大体分为以下几个步骤:
1、收集耗费资源的sql语句
2、查看执行计划
3、分析执行计划是否合理(需要结合表结构和业务情况)
4、调整sql语句
5、再次查看执行计划
.......
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2