请高手比较下两段代码的执行效率

xhzlhc 2011-11-02 09:02:30
表 t1 (50个字段) t2(30个字段)

select col1,col2,col_1,col_2 from (select * from t1 inner join t2 on t1.col1=t2.col_1)


select * from (select col1,col2 from t1)a inner join (select col_1,col_2 from t2)b on a.col1=b.col_1

我认为下面的效率高点,不知道可以用什么软件测sql的执行时间不?
...全文
145 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
merrill 2011-11-15
  • 打赏
  • 举报
回复
pl/sql dev直接 F5可以看到执行计划的
如果是dos下面
1.你可以先运行oracle_home\rdbms\admin\utlxplan.sql生成 plan_table表。
2。创建同义词 公共 plan_table
create public synonym plan_table for plan_table;
3.授予权限
grant all on plan_table to public;
4.oracle_home\sqlplus\admin\plustrce.sql 创建plustrace 角色
5授予权限
grant plustrace to public;
6.每次执行SQL前 你可以输入如下的命令
set autotrace traceonly;(包括执行计划和统计信息 不包括查询结果)
set autotrace on;(包括执行计划和统计信息)
还有几个 set




xhzlhc 2011-11-06
  • 打赏
  • 举报
回复
楼上大哥,怎么看执行计划啊 通过sql命令还是pl/sql dev工具
xhzlhc 2011-11-03
  • 打赏
  • 举报
回复
3楼说对了 第一条执行效率高

我原来的想法是第二条执行效率高些,因为我先把字段取出来了,这样字段少一些,占内存少,效率高,但是忽略了内查询取字段遍历了全表

怪不得我们老大说我让我仔细看看我写得代码,哈哈,果然是不经看啊
jdsnhan 2011-11-03
  • 打赏
  • 举报
回复
不同的数据量的结果是不一样的。更多的时候,去看执行计划
xhzlhc 2011-11-02
  • 打赏
  • 举报
回复
谢谢各位了,我去测试下
cnwz 2011-11-02
  • 打赏
  • 举报
回复
尽量不要用 * ,用到哪些字段列明
应该第一条效率高吧,直接就过滤了,第二条是全表先出来
huangdh12 2011-11-02
  • 打赏
  • 举报
回复
plsqldev 按F5键查看执行计划, 看看两条语句的cost
虫洞 2011-11-02
  • 打赏
  • 举报
回复
在inner join,先用子查询再关联没什么大区别
法2用在外连接有时还有用

内联接,直接
select col1,col2,col_1,col_2
from t1 ,t2
where t1.col1=t2.col_1
;
简便、不影响效率

2,668

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 认证与考试
社区管理员
  • 认证与考试社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧