如何提高该SQL语句的执行效率

木头是猫 2009-09-18 03:45:13
SELECT cjhb, item, isnull(SUM(CASE WHEN cjcount > 0 AND 
cjdate >= '2009-06-01 00:00:00' THEN cjcount END), 0) AS cjcount,
isnull(SUM(CASE WHEN cjcount = 0 AND
xrdate >= '2009-06-01 00:00:00' THEN 1 WHEN cjcount > 0 AND
xrdate >= '2009-06-01 00:00:00' AND
cjdate < '2009-06-01 00:00:00' THEN cjcount END), 0) AS cjcount2,
MAX(CASE WHEN cjcount > 0 THEN cjdate END) AS cjdate
FROM bayhistory
WHERE item <> ''
GROUP BY item, cjhb
HAVING SUM(CASE WHEN cjcount>0 and cjdate >= '2009-06-01 00:00:00' THEN cjcount END) > 0


环境:MSSQL2000 + WINXP , 百万级数据库

在SQL查询分析器运行时间为3秒,使用索引优化向导也没有索引建议

有什么方法可以提高这SQL语句的执行效率呢?
...全文
41 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
billpu 2009-09-18
  • 打赏
  • 举报
回复
帮顶
soft_wsx 2009-09-18
  • 打赏
  • 举报
回复
这么多嵌套!关注了!
木头是猫 2009-09-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 rucypli 的回复:]
WHERE item <> '' and cjcount>0 and cjdate >= '2009-06-01 00:00:00'
GROUP BY item, cjhb

[/Quote]

这样就无法统计出cjcount2

isnull(SUM(CASE WHEN cjcount = 0 AND 
xrdate >= '2009-06-01 00:00:00' THEN 1 WHEN cjcount > 0 AND
xrdate >= '2009-06-01 00:00:00' AND
cjdate < '2009-06-01 00:00:00' THEN cjcount END), 0) AS cjcount2
rucypli 2009-09-18
  • 打赏
  • 举报
回复
WHERE item <> '' and cjcount>0 and cjdate >= '2009-06-01 00:00:00'
GROUP BY item, cjhb

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧