请问这个查询可以怎样优化?

caozping 2003-07-29 11:12:06
INSERT T_11_L_D SELECT DISTINCT *
   FROM OT20021015 A JOIN OT20021015 B
ON (A.CinNum=B.CinNum AND A.CedNum=B.CedNum
AND (CONVERT(DATETIME,A.AnsDateTime) BETWEEN DATEADD(MS,-1000,B.AnsDateTime) AND DATEADD(MS,1000,B.EndDateTime))
AND NOT(A.TSName=B.TSName AND A.TPName=B.TPName AND A.SN=B.SN )
AND ( EXISTS(SELECT * FROM localinctru C
WHERE (A.TSname=C.TSname AND A.InctruGrpIde=C.IncTruGrpIde))) )

其中 ot20021015记录100万左右,localinctru记录为500左右,基中CinNum AnsDateTime为索引字段。
执行上面的查询一询需要30分钟,有时要更长的时间,
请问怎样优化以减少查找时间?
...全文
56 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nboys 2003-07-29
  • 打赏
  • 举报
回复
以CinNum,CedNum,AnsDateTime...等等条件里的字段建立索引
CrazyFor 2003-07-29
  • 打赏
  • 举报
回复
把语句拷贝到查询分析器,再点工具下的索引优化向导来优化你的索引.
愉快的登山者 2003-07-29
  • 打赏
  • 举报
回复
建立索引。
ckp 2003-07-29
  • 打赏
  • 举报
回复
建立索引,然后优化索引
erigido 2003-07-29
  • 打赏
  • 举报
回复
up
liuyun2003 2003-07-29
  • 打赏
  • 举报
回复
同意CrazyFor(上苍保佑吃完了饭的人民) 的意见。利用索引优化器,优化你的索引。这样会增加你的查询速度。
waterw 2003-07-29
  • 打赏
  • 举报
回复
INSERT T_11_L_D SELECT DISTINCT A.*
   FROM OT20021015 A Inner Join localinctru C
On A.TSname=C.TSname AND A.InctruGrpIde=C.IncTruGrpIde
Inner JOIN OT20021015 B
ON (A.CinNum=B.CinNum AND A.CedNum=B.CedNum
AND (CONVERT(DATETIME,A.AnsDateTime) BETWEEN DATEADD(MS,-1000,B.AnsDateTime) AND DATEADD(MS,1000,B.EndDateTime))
AND NOT(A.TSName=B.TSName AND A.TPName=B.TPName AND A.SN=B.SN )
对C子查询倒不如用连接

22,209

社区成员

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

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