oracle sql tunning 15 --常用改写

本文通过对比不同的SQL查询方式,展示了如何通过使用IN而非OR、UNION而非多个OR条件等技巧来提高查询效率。同时,文章还比较了HAVING与WHERE子句、MINUS与NOT IN操作符在不同场景下的性能差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

改写的目的是为了缩短语句运行时间,通常第2种方法比第一种好

1.having vs where

(1)select owner,count(*) from all_objects group by owner  having wner='SYS'

     time:44.156 seconds   cost:250

(2)select owner,count(*) from all_objects WHERE wner='SYS' group by owner

     time:2.985 seconds    cost:244

2.minus vs not in

测试表:

drop table test1;
create table test1 as select owner,object_id,object_name from all_objects
drop table test2;
create table test2 as select owner,object_id,object_name from all_objects where object_id>2000

(1)

select object_id
from test1
minus
select object_id
from test2

time:0.688seconds  cost:631

(2)

select distinct a.object_id from test1 a where a.object_id not in (select object_id from test2)

time:0.219seconds  cost:592

3.or vs union

(1)select * from test1 where wner = 'SYS' OR wner='HR' or wner='SCOTT'

time:0.094 seconds cost:109

(2)

SELECT * FROM TEST1 WHERE wner='SYS'
UNION
SELECT * FROM TEST1 WHERE wner='HR'
UNION
SELECT * FROM TEST1 WHERE wner='SCOTT'

time:1.281 seconds cost:329

4.or vs in

(1)select * from test1 where wner = 'SYS' OR wner='HR' or wner='SCOTT'

     time:0.094 seconds cost:109

(2)select * from test1 where owner in ('SYS','HR','SCOTT')

     time:0.016 seconds cost:109

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15720542/viewspace-664827/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15720542/viewspace-664827/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值