【发布时间】:2010-01-27 13:40:40
【问题描述】:
我有这个网络应用程序工具,它可以查询数据并将其显示在网格中。现在很多人都在使用它,所以它必须非常高效。
问题是,我需要通过连接添加几个额外的字段,现在查询运行需要很长时间。
如果我在 sql server 中运行以下查询:
select top 100 *
from bam_Prestatie_AllInstances p
join bam_Zending_AllRelationships r on p.ActivityID = r.ReferenceData
join bam_Zending_AllInstances z on r.ActivityID = z.ActivityID
where p.PrestatieZendingOntvangen >= '2010-01-26' and p.PrestatieZendingOntvangen < '2010-01-27'
这大约需要 35-55 秒,这太长了。因为这只是一小部分。
如果我删除两个日期检查之一,它只需要 1 秒。如果我删除这两个连接也只需要 1 秒。
当我对此使用查询计划时,我可以看到 100% 的时间都花在了 PrestatieZendingOntvangen 字段的索引上。如果我将此字段设置为索引,则不会发生任何变化。
有人知道该怎么做吗?
因为我的客户开始抱怨超时等问题。
谢谢
【问题讨论】:
-
请张贴表格架构
-
在 ... 和 ... 之间使用运算符来表示两个日期
-
如果您不在
WHERE子句中使用它们,为什么还要使用它们? -
因为我需要来自其他数据库的数据,并且需要将它们转换为 c# 中的列表。但显然,如果我在我的 z 数据上执行 where's 会更快,所以你所说的有些道理
标签: sql-server datetime join