以下查询需要大约3000毫秒才能执行。 我无法微调这个查询以获得相当大的性能优势。
declare @EndDate datetime;
declare @FromDate datetime;
set @EndDate = getdate();
set @FromDate = DATEADD(year,-1, @EndDate);
SELECT [twc].ColumnId, [twc].ColumnName
FROM [table1] twcs with(nolock)
INNER JOIN [table2] twc with(nolock) ON [twc].ColumnId = [twcs].ColumnId
WHERE [twcs].[ColumnName] = 1 AND [twc].[CreateDate] between @fromdate and @enddate;
答案 0 :(得分:2)
这是您的查询:
SELECT twc.ColumnId, twc.ColumnName
FROM table1 twcs with (nolock) INNER JOIN
table2 twc with (nolock)
ON twc.ColumnId = twcs.ColumnId
WHERE twcs.ColumnName = 1 AND twc.CreateDate between @fromdate and @enddate;
我建议使用以下索引,如下所示:
table2(CreateDate, ColumnId)
table2(ColumnId, CreateDate)
table1(ColumnName, ColumnId)
table1(ColumnId, ColumnName)
让优化器选择使用哪个。
答案 1 :(得分:1)
使用简单直接的查询,您可能会查看表需要新索引来加速返回而不是脚本优化的问题。