如:
select country
from table1
inner join table2 on table1.id=table2.id
where table1.name='a' and table2.name='b'
group by country
解析之后,哪个部分会先执行?
答案 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:
的顺序
- FROM clause
- WHERE子句
- GROUP BY子句
- HAVING条款
- SELECT条款
- ORDER BY子句
醇>
但请注意,这是“理论”顺序 - 允许SQL引擎以其他顺序执行操作,前提是最终结果似乎是使用上述顺序生成的。
答案 2 :(得分:1)
如果从Oracle安装免费工具SQL * Developer,则可以单击按钮获取解释计划。