WtF*_*dgE 2 sql-server datetime join
我有这个webapplication工具,它可以查询数据并在网格中显示它.现在很多人都使用它,所以它必须具有很高的性能.
问题是,我需要通过连接添加几个额外的字段,现在需要永远运行查询.
如果我在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'
Run Code Online (Sandbox Code Playgroud)
这需要大约35-55秒,这是太长了.因为这只是一个小的.
如果我删除两个日期检查之一,它只需要1秒.如果我删除了两个连接,它也只需要1秒钟.
当我在此使用查询计划时,我可以看到100%的时间花在了PrestatieZendingOntvangen字段的索引上.如果我将此字段设置为索引,则不会发生任何变化.
有人知道该怎么办?
因为我的客户开始抱怨超时等问题.
谢谢
除了bam_Prestatie_AllInstances.PrestatieZendingOntvangen列上索引的明显问题外,还要检查是否有外键列的索引:
bam_Prestatie_AllInstances)bam_Zending_AllRelationships)bam_Zending_AllRelationships)bam_Zending_AllInstance)索引外键字段可以帮助加快这些字段上的JOIN!
另外,正如已经提到的:尝试通过指定特定的字段列表来限制您选择的字段 - 而不是使用SELECT *- 特别是如果您连接多个表,只选择您选择的绝对列数(乘以您的行数) select)可以导致海量数据传输 - 如果你不需要所有这些列,那就是浪费带宽!