注册 登录
编程论坛 SQL Server论坛

看一看这个语句为什么执行这么慢

xxm30 发布于 2008-12-14 20:41, 855 次点击
update kq_record set dtime=(select top 1 kqdtime from kq_kqlogdata where empid=kq_record.empid and kqdtime>=kq_record.oktime and kqdtime<=dateadd(mi,@minsLate+kq_record.setlongtimes,kq_record.oktime)),errtype=-1 where departid=@depid and upordown=1 and oktime>@stime and oktime<@etime and kqtype in (0,-2,-3) and (select count(id) from kq_kqlogdata where empid=kq_record.empid and kqdtime>=kq_record.oktime and kqdtime<=dateadd(mi,@minsLate+kq_record.setlongtimes,kq_record.oktime))>0

目标是:考勤分析.

kq_record中有需要考勤的数据,其中oktime为考勤目标时间,而kq_kqlogdata是来自考勤机上的原始记录
2 回复
#2
happynight2008-12-15 11:46
把kq_kqlogdata的表结构和说明发上来 另外你有无在上面做索引
你写这条语句的目的是什么 每个变量是用来什么
你用的数据库是SQL的还是ACCESS的 详细说明下
另外 如果比较频繁的读取数据 例如 考勤数据分析的时候 可以考虑将数据一次性读取到客户端的内存中然后用Filter属性来筛选 应该会比较快点
#3
球球2008-12-15 12:16
dateadd(mi,@minsLate+kq_record.setlongtimes,kq_record.oktime)
这句可以提取出来
1