首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

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

2012-11-26 
DB2中exists与in的效率对比 — 5秒与21分钟的差距在SQL查询优化中,无论是ORACLE,SQL Server,还是DB2,或者其

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

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

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

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

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

她的需求是这样的:

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

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

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

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

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

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

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

网点(营业机构)信息 表:(Key—网点,存储网点信息,开卡机构与卡管理表关联)

我们先将上面的需求分解,不管多么复杂的需求,分解之后,都变得简单,下面的查询中屏蔽了一些敏感信息;

开卡机构所属的城市代码不为'790':

 

热点排行