下面的查询大约需要3000 to才能执行。我无法微调这个查询以提供相当大的性能优势.
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;发布于 2014-11-25 15:45:45
这是您的查询:
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)让优化器选择使用哪一个。
发布于 2014-11-25 15:44:13
使用这样简单而直接的查询,您可能会看到一个问题,在这个问题中,表需要一个新的索引来加速返回,而不是脚本优化。
https://stackoverflow.com/questions/27130891
复制相似问题