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

sql语句优化,请!

2012-03-19 
sql语句优化,请高手指点!!!!各们大侠好! 现在我在做一个数据验证功能。判断我的条码是否已经成功扫描到我的

sql语句优化,请高手指点!!!!
各们大侠好!
 现在我在做一个数据验证功能。判断我的条码是否已经成功扫描到我的系统中
我的表:
  DISPR008L 
  DISPD00F
上面的表是记录成功扫描到系统的条码, DISPR008L,DISPD00F两个表联合才能产生一个条码,而且是唯一的

 ELEMS21L
  DISFD05L
这个是包含所有的条码 ELEMS21L, DISFD05L两个表联合才能产生一个条码,而且是唯一的
我现在的思路就是下面的代码

SQL code
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)
 
我这样写要运行40秒才能做出来,各位大侠给指点一下。看怎么写才最优化,速度快



[解决办法]
好象不是MS—SQL的
[解决办法]
感觉没什么优化的
[解决办法]
DISPR008L,DISPD00F两个表联合才能产生一个条码??

SQL code
最好给出完整的表结构,测试数据,计算方法和正确结果.
[解决办法]
友情帮顶哈
[解决办法]
加内存和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.用临时表吧!

热点排行