DB2中exists与in的效率对比 — 5秒与21分钟的差距

本文通过实际案例对比了DB2中exists和in子查询的效率,一个查询耗时21分钟,而替换后仅用5秒。强调在SQL优化中应优先考虑使用exists代替in。
摘要由CSDN通过智能技术生成

在SQL查询优化中,无论是ORACLE,SQL Server,还是DB2,或者其他数据库产品,都有这样一条优化规则:尽量使用exists去替代查询中的in。

但是关于他们之间的查询效率,并没有给出太多的实际查询对比,都只是看书上写,或者听“牛人”说,就信以为真了;

那么他们之间的效率差距到底有多大呢?我们来看下吧!

前几天一同事,需要找些数据,然后自己尝试写了这个查询语句,写了一会,写不下去了,然后向我“求救”。

她的需求是这样的:

1. 查找这样的卡号,卡号对应的账户,账户状态正常(为'0'),账户扩展标志前5为也正常('00000');

2. 卡号为已经领取的卡(为'1');

3. 开卡机构所属的城市代码不为'790'。

这个需求中,涉及到4张表,屏蔽写信息:

卡管理物理文件(表):(Key—卡号,存储卡号,以及卡的各种状态)(as400上的物理文件,相当于DB2中的表)

卡号账号对照表:(Key—账号,通过卡号,取到对应的账号,同时存储卡号和账号)

活期存款帐户动态表: (Key—客户号,存储账户信息,包括账户状态,账号;账号与卡号账号对照表关联)<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值