SQL 语句优化问题?

[复制链接]
查看11 | 回复7 | 2011-11-1 16:20:28 | 显示全部楼层 |阅读模式
WHERE 条件中的IN 和 OR 在执行时到底哪个速度快?
我是看到OR的比IN 的速度快。
可是我在查看物理读比较高的sql语句时,却发现OR的比IN 的高,难道,物理读高的语句是优化的吗?
语句为:
select distinct
vs.sql_text,
vs.buffer_gets, vs.disk_reads,
to_char(to_date(vs.first_load_time,'YYYY-MM-DD/HH24:MI:SS'),'MM/DD HH24:MI:SS') first_load_time,
rawtohex(vs.address) address, vs.hash_value hash_value
, au.USERNAME parseuser
from v$sqlarea vs
, all_users au
where (au.user_id(+)=vs.parsing_user_id)
and (executions >= 1)
and (InStr(vs.sql_text, '/*("Toad, Exclude Me!&quot

*/') = 0)
order by
disk_reads desc
请各位帮忙.....先谢谢了!!
回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
我的感觉是or和in差不多。因为in也是被解析为or来处理的。
回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
最初由 meimei-cici 发布
[B]
select distinct
vs.sql_text,
vs.buffer_gets, vs.disk_reads,
to_char(to_date(vs.first_load_time,'YYYY-MM-DD/HH24:MI:SS'),'MM/DD HH24:MI:SS') first_load_time,
rawtohex(vs.address) address, vs.hash_value hash_value
, au.USERNAME parseuser
from v$sqlarea vs
, all_users au
where (au.user_id(+)=vs.parsing_user_id)
and (executions >= 1)
and (InStr(vs.sql_text, '/*("Toad, Exclude Me!&quot

*/') = 0)
order by
disk_reads desc[/B]

可我没在你的SQL中找到in或or啊。
回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
这个语句是“查看物理读比较高的sql语句”
回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
我怀疑你是先执行or的sql语句,再执行in的sql语句。如果是这样的。那or的物理读比in的物理读多是正常的。你都多执行几次看看情况吧。
回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
我是这样处理的,由于我们部门比较多,我想对比,有的部门改成OR,有的还保持IN ,然后执行上面的语句看的。
回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
这个会有较大的影响嘛?应该不会啊
回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
不能定义in 或or那个快的
具体到应用,以及表的结构,索引,数据的选择范围等。
所以感觉你的说明还是不够详细,很难判断。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行