问题描述
- sql server超时已过期
-
SELECT a1.LogCard, a1.LogID, a1.LogName, a1.LogBm, a1.LogTime AS 第一次刷卡时间,
a1.clockID AS 门禁1, a2.LogTime AS 第二次刷卡时间, a2.clockID AS 门禁2
FROM LogTable a1 INNER JOIN
LogTable a2 ON a1.LogCard = a2.LogCard AND a1.clockID <> a2.clockID
WHERE (a1.LogTime BETWEEN '2015-01-03 11:00:00' AND '2015-1-03 13:00:00') AND
(a2.LogTime BETWEEN '2015-01-03 11:00:00' AND '2015-01-03 13:00:00') AND
(a2.LogTime =
(SELECT MIN(logtime)
FROM logtable
WHERE logcard = A1.logcard AND logtime > A1.logtime)) AND (DATEDIFF([MINUTE],
a1.LogTime, a2.LogTime) > 3)
从数据库中选出从3门禁到51门禁,或者从51到3门禁相近的两个之间的时间超过3分钟的,如上所示,在sql 2k中提示超时已过期,如何修改?
解决方案
用sql profiler 监控一下查询语句
解决方案二:
你这SQL写的太复杂了,这种问题分步骤很好解决的吧,我的经验是先申请表变量或临时表把数据一步步缩小范围。
不要搞这么多联合查询,效率很低逻辑还不清楚。
解决方案三:
请先贴出你的执行计划来看看。
看你的索引这些是否已经设置好。
解决方案四:
sql server超时已过期,用查询分析器执行下看看是不是执行的时间太长了,优化一下。
时间: 2024-10-09 23:35:56