我有一个大约18k行的表,一个星期,另一周有22k行。
我正在使用视图和索引来检索这样的数据
SELECT TOP 100 * FROM my_view
WHERE timestamp BETWEEN @date1 AND
@date2
但不知何故,22k的一周检索数据的速度更快(大约3-5秒),而另一周则至少需要一分钟。这些导致我的wcf超时。我错过了什么?
答案 0 :(得分:0)
在时间戳字段上应用索引。
如果您已经有时间戳索引,那么请检查执行计划中用于此查询的索引。
索引提示只会在您的查询涉及连接表的情况下发挥作用,并且用于连接到另一个表的列与多个索引匹配。在这种情况下,数据库引擎可以选择使用一个索引来进行连接,并且从调查中您可能知道如果它使用另一个索引,则查询将更好地执行。在这种情况下,您提供索引提示,告诉数据库引擎使用哪个索引。
示例代码使用索引提示:
select [Order].[OrgId], [OrderDetail].[ProductId]
from [Order]
inner join [OrderDetail] **with(index(IX_OrderDetail_OrderId))** on [Order].[OrderId] = [OrderDetail].[OrderId]