日期:2014-05-18 浏览次数:20479 次
select a.* from ( select cqtele,qcddis,qstepn,qcdmac,qcdmap,celeme,(CELEME ||cast(QSTEPN as char(3))) as barcode from elems21l,disfd05l where qcddis=ccddis and crect0='R' and qcddis='001187' and qstepn=950) as a where a.barcode not in ( select (scdel0||cast(lstepn as char(3))) as barcode from dispr08l,dispd01l where sindtr=lindtr and lcddis='001187' and qstepn=950)
最好给出完整的表结构,测试数据,计算方法和正确结果.
------解决方案--------------------
友情帮顶哈
------解决方案--------------------
加内存和CPU吧
------解决方案--------------------
看数据量,如果内表数据量大用IN会很慢,改成临时表试试
------解决方案--------------------
写这么一团代码,好用吗?别人看得懂?自己过一段时间看得懂?交接给别人,他看得懂?
DB2可以自动调节缓存,只要把SQL写得好一点就没问题,建议:
1、写个存储过程,这样可以预编译,提高成本估算效率
2、DB2的临时表非常好用啊,怎么不多利用一下呢。DECLARE GLOBAL TEMPORARY TABLE SESSION.aaa()3、用你的表DISPR008L DISPD00F 联合生成一个条码做主键的临时表 my,联合键尽量用到索引
用所有表ELEMS21L DISFD05L 联合生成一个条码做主键的临时表 all,联合键尽量用到索引
判断你的输入参数,是否即在my中,又在all中
------解决方案--------------------
不知道NOT IN 里面有多少符合结果的数据.
------解决方案--------------------
不懂,路过,帮顶!
------解决方案--------------------
DB2可以自动调节缓存,只要把SQL写得好一点就没问题,建议:
1、写个存储过程,这样可以预编译,提高成本估算效率
2、DB2的临时表非常好用啊,怎么不多利用一下呢。DECLARE GLOBAL TEMPORARY TABLE SESSION.aaa()3、用你的表DISPR008L DISPD00F 联合生成一个条码做主键的临时表 my,联合键尽量用到索引
用所有表ELEMS21L DISFD05L 联合生成一个条码做主键的临时表 all,联合键尽量用到索引
------解决方案--------------------
嵌套用的太多了,用存储过程吧.
------解决方案--------------------
路过 帮顶
------解决方案--------------------
试着给表加索引,看看查询速度会不会快点!!
------解决方案--------------------
路过顶。1.用临时表吧!