50000条数据检索,这个SQL文慢的离谱,还能优化提速吗?各位达人帮看看!

shivaree 2004-12-07 09:21:16
SELECT Result1.BV_Phase, Result2.BV_Count FROM

(

SELECT T_BV_Phase AS BV_Phase FROM T_Vote GROUP BY T_BV_Phase

)

AS Result1

LEFT JOIN

(

SELECT COUNT(*)AS BV_Count,T_BV_Phase AS BV_Phase FROM T_Vote

WHERE T_BV_FoundDay<#2004/11/18# AND T_BV_FoundDay<>NULL

GROUP BY T_BV_Phase

)

AS Result2

ON

(

Result1.BV_Phase = Result2.BV_Phase

)

OR

(

Result1.BV_Phase IS NULL AND Result2.BV_Phase IS NULL

)

...全文
112 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2004-12-11
  • 打赏
  • 举报
回复
日期用%s动态加入
TrueYi 2004-12-11
  • 打赏
  • 举报
回复
所以说做好数据库结果是一项重要的工作..
shivaree 2004-12-10
  • 打赏
  • 举报
回复
TO liuxiaoyi666(兔子):

如果要改表的结构的话,那就算了。

这个结构用了太久,涉及的东西太太多了,结构改了的话相关的程序要改一年。

TO WangZWang(阿来) :

你说在字段建立索引,可是日期2004/11/18的位置的日期是动态的,能实现的廖吗?
WangZWang 2004-12-09
  • 打赏
  • 举报
回复
--就这样可实现你的功能吧?
--可在表字段T_BV_FoundDay建立索引

Select T_BV_Phase,count(*) as BV_Count
from T_Vote
where (T_BV_FoundDay<#2004/11/18# AND T_BV_FoundDay is not NULL)
group by T_BV_Phase
  • 打赏
  • 举报
回复
你一个表查询加一个临时表再左连一下,你要加快速度肯定要把你的表重新分一下,你这么做表肯定有问

题,叫你写表的结构是让你写一下内在联系

这个SQL语句没法优化,但你的表一定可以优化的
shivaree 2004-12-09
  • 打赏
  • 举报
回复
没有人会吗?顶一下~
  • 打赏
  • 举报
回复
你把表的结构写一下吧
shivaree 2004-12-07
  • 打赏
  • 举报
回复
只有T_Vote一个表,表内50000行(记录数),59列(项目),项目都是并列的

7,714

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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