oracle如何执行sql语句?

时间:2011-05-19 07:20:01

标签: oracle

如:

select country 
  from table1 
 inner join table2 on table1.id=table2.id
 where table1.name='a' and table2.name='b'
 group by country 

解析之后,哪个部分会先执行?

3 个答案:

答案 0 :(得分:4)

看起来您想知道Oracle选择的执行计划。您可以从Oracle本身获得该输出:

set serveroutput off
< your query with hint "/*+ gather_plan_statistics */" inserted after SELECT >
select * from table(dbms_xplan.display_cursor(null, null, 'last allstats'));

有关如何阅读查询计划的说明,请参阅此处:http://download.oracle.com/docs/cd/E11882_01/server.112/e16638/ex_plan.htm#i16971

请注意,查询计划的选择并未修复。 Oracle根据可用的统计数据尝试查找当前最佳的查询计划。

答案 1 :(得分:1)

您可以在很多地方找到SQL is executed

的顺序
  
      
  1. FROM clause
  2.   
  3. WHERE子句
  4.   
  5. GROUP BY子句
  6.   
  7. HAVING条款
  8.   
  9. SELECT条款
  10.   
  11. ORDER BY子句
  12.   

但请注意,这是“理论”顺序 - 允许SQL引擎以其他顺序执行操作,前提是最终结果似乎是使用上述顺序生成的。

答案 2 :(得分:1)

如果从Oracle安装免费工具SQL * Developer,则可以单击按钮获取解释计划。

快速解释是http://www.seeingwithc.org/sqltuning.html