SQL性能问题:定时

时间:2017-09-01 21:31:12

标签: sql sql-server performance query-performance query-tuning

以下SQL查询在生产中执行的时间超过5:19分钟。此SQL是从服务器端C#代码动态生成的,并且需要很长时间才能为少数客户端执行。由于生产时间很长,Web服务正在超时。您能否优化此SQL以提高性能?

这是动态生成的查询 -

-9.8

1 个答案:

答案 0 :(得分:1)

这不是一个查询。这是四个查询。

日期比较看起来很危险。它们仅适用于某些语言设置。生成查询的代码应该是固定的。

关于第二个查询:是否将使用索引IX_TepmBase_Audit_Date,取决于DBMS是否认为日期条件足够有限。我认为大多数记录符合条件,所以让我们希望DBMS不使用索引。也许Action上的索引会有所帮助,因为我们正在寻找以特定字符串开头的所有操作。

在第三个查询中,您按t.id进行分区。不应该id是表格的唯一列;主键可能吗?分区看起来没有意义,Rank总是1.然后查询包含一个非相关的NOT EXISTS子句。所有记录的条件都为true或false。这很可能是一个错误。

要使第四个查询快速运行,您需要#TepmBaseExtend(id)上的索引。以及派生表的另一个索引。也许在#TepmBaseExtend(Business_Date, Market_Value, Fund_Unique_Identifier)。不知道你的数据,我不确定哪个索引完全正确,但那可能有效。