在SQL查询优化中,无论是ORACLE,SQL Server,还是DB2,或者其他数据库产品,都有这样一条优化规则:尽量使用exists去替代查询中的in。
但是关于他们之间的查询效率,并没有给出太多的实际查询对比,都只是看书上写,或者听“牛人”说,就信以为真了;
那么他们之间的效率差距到底有多大呢?我们来看下吧!
前几天一同事,需要找些数据,然后自己尝试写了这个查询语句,写了一会,写不下去了,然后向我“求救”。
她的需求是这样的:
1. 查找这样的卡号,卡号对应的账户,账户状态正常(为'0'),账户扩展标志前5为也正常('00000');
2. 卡号为已经领取的卡(为'1');
3. 开卡机构所属的城市代码不为'790'。
这个需求中,涉及到4张表,屏蔽写信息:
卡管理物理文件(表):(Key—卡号,存储卡号,以及卡的各种状态)(as400上的物理文件,相当于DB2中的表)
卡号账号对照表:(Key—账号,通过卡号,取到对应的账号,同时存储卡号和账号)
活期存款帐户动态表: (Key—客户号,存储账户信息,包括账户状态,账号;账号与卡号账号对照表关联)<