【发布时间】:2017-08-07 15:02:24
【问题描述】:
以下示例查询是我的主要查询的一部分。我发现下面查询中的 SORT 运算符消耗了 30% 的成本。
为了避免排序,需要创建索引。有没有其他方法可以优化这段代码。
SELECT TOP 1 CONVERT( DATE, T_Date) AS T_Date
FROM TableA
WHERE ID = r.ID
AND Status = 3
AND TableA_ID >ISNULL((
SELECT TOP 1 TableA_ID
FROM TableA
WHERE ID = r.ID
AND Status <> 3
ORDER BY T_Date DESC
), 0)
ORDER BY T_Date ASC
【问题讨论】:
-
添加索引到
T_Date? -
r表在哪里? -
是的,但是最好查看整个代码以了解您要做什么
-
一些样本数据和期望的结果也会有所帮助...
-
考虑到你正在寻找一行和一个值,考虑 min() / max() 而不是 top 1 asc / desc
标签: tsql sql-server-2012 query-optimization