我可以: 邀请好友来看>>
ZOL星空(中国) > 技术星空(中国) > Oracle星空(中国) > oracle什么是执行计划
帖子很冷清,卤煮很失落!求安慰
返回列表
签到
手机签到经验翻倍!
快来扫一扫!

oracle什么是执行计划

55浏览 / 0回复

1253494f5n82...

1253494f5n8284z

0
精华
1
帖子

等  级:Lv.1
经  验:20
  • Z金豆: 0

    千万礼品等你来兑哦~快点击这里兑换吧~

  • 城  市:
  • 注  册:2014-03-12
  • 登  录:2014-03-12
发表于 2014-03-12 09:54:23
电梯直达 确定
楼主

1,什么是执行计划


所谓执行计划,顾名思义,就是对一个查询任务,做出一份怎样去完成任务的详细方案。举个生活中的例子,我从珠海要去英国,我可以


选择先去香港然后转机,也可以先去北京转机,或者去广州也可以。但是到底怎样去英国划算,也就是我的费用最少,这是一件值得考究


的事情。同样对于查询而言,我们提交的SQL仅仅是描述出了我们的目的地是英国,但至于怎么去,通常我们的SQL中是没有给出提示信息


的,是由数据库来决定的。


  我们先简单的看一个执行计划的对比:


  SQL> set autotrace traceonly


  执行计划一:


  SQL> select count(*) from t; 
  COUNT(*) 
  ---------- 
  24815 
  Execution Plan 
  0   SELECT STATEMENT Optimizer=CHOOSE 
  1  0  SORT (AGGREGATE) 
  2  1   TABLE Access (FULL) OF 'T'


  执行计划二:


  SQL> select count(*) from t; 
  COUNT(*) 
  24815 
  Execution Plan 
  0   SELECT STATEMENT Optimizer=CHOOSE (Cost=26 Card=1) 
  1  0  SORT (AGGREGATE) 
  2  1   INDEX (FULL SCAN) OF 'T_INDEX' (NON-UNIQUE) (Cost=26 Card=28180)


  这两个执行计划中,第一个表示求和是通过进行全表扫描来做的,把整个表中数据读入内存来逐条累加;第二个表示根据表中索引,把


整个索引读进内存来逐条累加,而不用去读表中的数据。但是这两种方式到底哪种快呢?通常来说可能二比一快,但也不是绝对的。这是一


个很简单的例子演示执行计划的差异。对于复杂的SQL(表连接、嵌套子查询等),执行计划可能几十种甚至上百种,但是到底那种最好呢?

zcs-15818-38031

点击下载


oracle什么是执行计划

高级模式
星空(中国)精选大家都在看24小时热帖7天热帖大家都在问最新回答

针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员查看帮助  或  给我提意见

快捷回复 APP下载 返回列表