对N个有几万条数据的表的连接查询如何提高查询速度?

win98ddk 2003-10-18 12:12:33
弟近日负责一考勤项目,里面的排班表、刷卡数据表以及别的表都有好几万条数据,最多的一个有6万条,采用Access数据库,Dao连接,查询的时候发现速度奇慢,做一个300人的考勤月报表需要差不多两天,特向各位学长求救。
典型代码如下所示:

CX_1 = "UPDATE PBB P,SKDJ S,KQGZ K,RS R SET P.CQ" & Fld_1 & "='准时上班' WHERE P.GH=S.GH AND S.SJ>= " & _
"DATEADD('n',-K.SXSJ" & Fld_1 & "_1,P.SJ" & Fld_1 & "_1) AND S.SJ<= DATEADD('n',K.CDSJ" & Fld_1 & ",P.SJ" & _
Fld_1 & "_1) AND P.CHECK=FALSE AND P.SB" & Fld_1 & "=TRUE " & _
"AND P.SJ" & Fld_1 & "_1<#" & Format(Now, "YYYY-MM-DD HH:MM:SS") & "# AND P.RQ>= #" & _
RQV_1 & "# AND P.RQ<= #" & RQV_2 & "# AND R.GH=P.GH AND R.KQGZBH=K.KQGZBH AND " & TJ_1
DB_1.Execute CX_1, 128

此语句执行将近5秒钟,能够优化到1秒钟是最理想的,弟已经黔驴技穷了
...全文
178 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cheny1234 2003-10-22
  • 打赏
  • 举报
回复
用between会再快一点,试试有多少!
win98ddk 2003-10-21
  • 打赏
  • 举报
回复
也快不了很多,弟反复检测,发现这一部分化的时间最多
,去掉后只需要2-3秒钟,不知道怎么进行优化?

S.SJ>= DATEADD('n',-K.SXSJA_1,P.SJA_1) AND
S.SJ<= DATEADD('n',K.CDSJA,P.SJA_1) AND
chenyubang 2003-10-20
  • 打赏
  • 举报
回复
增加索引
cheny1234 2003-10-20
  • 打赏
  • 举报
回复
"UPDATE PPB SET CQ" & Fld_1 & "='准时上班'
from ((PBB P inner join SKDJ S on P.GH=S.GH) inner join KQGZ K on R.KQGZBH=K.KQGZBH) inner join RS R on R.GH=P.GH
WHERE S.SJ>=DATEADD('n',-K.SXSJ" & Fld_1 & "_1,P.SJ" & Fld_1 & "_1) AND S.SJ<= DATEADD('n',K.CDSJ" & Fld_1 & ",P.SJ" & Fld_1 & "_1) AND P.CHECK=FALSE AND P.SB" & Fld_1 & "=TRUE AND P.SJ" & Fld_1 & "_1<#" & Format(Now, "YYYY-MM-DD HH:MM:SS") & "# AND P.RQ>= #" & RQV_1 & "# AND P.RQ<= #" & RQV_2 & "# AND " & TJ_1
zhouwenh 2003-10-20
  • 打赏
  • 举报
回复
数据量这么大了,怎么不用SQL Server?
changechange 2003-10-19
  • 打赏
  • 举报
回复
同意上述意见
StarSon 2003-10-18
  • 打赏
  • 举报
回复
1、对联接的主键和外键建立索引
2、尽量选取主表的字段
3、尽量少选取字段
yoki 2003-10-18
  • 打赏
  • 举报
回复
1:增加索引
2:改变各条件的排列顺序

7,713

社区成员

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

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