设为首页收藏本站

八达网

 找回密码
 注册
查看: 1482|回复: 10
打印 上一主题 下一主题

熟悉db2的来指点一下啊啊啊啊啊啊

[复制链接]

25

主题

0

好友

4792

积分

飞龙

跳转到指定楼层
1
发表于 2015-2-26 18:20 |只看该作者 |正序浏览
语句如下:
SELECT SUM(L.QTY_FORE)*0.8*I.COE ,SUM(L.AMT)*0.002*I.COE ,I.SCORE
FROM CUST_CO C,CUST_CO_LINE L,CUSTINFO I
WHERE  C.STATUS!='08' AND C.CUST_ID=I.CUST_ID  
AND C.CRT_DATE BETWEEN '20150221' AND '20150226'
AND C.NUM=L.NUM  
AND L.T_ID NOT IN('11','22','33')
AND C.C_ID IN('98','99')
GROUP BY I.CUST_ID,I.COE,I.SCORE;



C.C_ID IN('98','99')
这里,改成C_ID='98'
或者IN 里面值只有一个时,执行效率非常的慢。

但是只要IN里有两个以上甚至几十个,或者是写成两个相同的值,执行效率也非常的快。

搞不懂什么原因,请大家指点一下。

23

主题

0

好友

2万

积分

大和

超级大山子

11
发表于 2015-2-27 01:30 |只看该作者
可能是DB2的查询分析器在处理IN子句的时候采用了不同的优化策略导致的,这种情况下你应该查阅一下DB2的手册,是否有相关的配置开关,如果懒的话,那也别搞了直接随便加几个不可能存在的字串在IN子句里面。

话说回来,除了金融证券行业DB2现在很少用了吧
回复

使用道具 举报

1

主题

0

好友

7614

积分

大象

10
发表于 2015-2-26 22:53 来自手机 |只看该作者
看看你的索引吧
回复

使用道具 举报

195

主题

0

好友

2万

积分

大和

9
发表于 2015-2-26 22:13 来自手机 |只看该作者
执行前分析表了吗
回复

使用道具 举报

143

主题

1

好友

2万

积分

大和

8
发表于 2015-2-26 22:07 |只看该作者
常用的话,写成存储过程,带宿主变量。
回复

使用道具 举报

25

主题

0

好友

4792

积分

飞龙

7
发表于 2015-2-26 20:27 |只看该作者
intothebbc 发表于 2015-2-26 18:30
估计是用错索引了。


哎,我就不是程序员,却偏偏要写程序,都是硬着头皮上的,
从程序、数据库到平台估计都很多问题,只能将就着用。
不个这数据库本身到是应该没有多大问题,公司的业务系统,外包开发的用了很多年了,我只是写点查询,
之前没有问题,后来改了点东西就经常造成锁表,今天完全顶不住了。

然后无意发现居然用IN多查几个值反而非常快,刚刚把语句从=改成把值复制两个到in里面今天将就着。。。
明天再弄了。
回复

使用道具 举报

25

主题

0

好友

4792

积分

飞龙

6
发表于 2015-2-26 18:33 |只看该作者
intothebbc 发表于 2015-2-26 18:29
收集下统计信息吧。比较下 执行计划

谢青云大神

研究一下。。我是彩笔。。。
回复

使用道具 举报

158

主题

0

好友

1万

积分

航母

5
发表于 2015-2-26 18:30 来自手机 |只看该作者
估计是用错索引了。
回复

使用道具 举报

25

主题

0

好友

4792

积分

飞龙

4
发表于 2015-2-26 18:29 |只看该作者
菊菊思密达 发表于 2015-2-26 18:27
我还以为是暗黑破坏神2

回复

使用道具 举报

158

主题

0

好友

1万

积分

航母

3
发表于 2015-2-26 18:29 来自手机 |只看该作者
收集下统计信息吧。比较下 执行计划
回复

使用道具 举报

11

主题

0

好友

1万

积分

航母

2
发表于 2015-2-26 18:27 |只看该作者
我还以为是暗黑破坏神2
你们都说之前的屁股太肥了,没有葫芦形,那算了,不展示屁股了。那股淡淡的熟味,你们不懂,我也不说。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|八达网    

GMT+8, 2025-11-23 06:01

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部