0

我有一个表,某周有大约 18k 行,另一周有 22k 行。

我正在使用视图和索引来检索数据,就像这样

SELECT TOP 100 * FROM my_view 
WHERE timestamp BETWEEN @date1 AND
@date2

但不知何故,有 22k 的一周检索数据的速度更快(大约 3-5 秒),而另一个则至少需要一分钟。这些导致我的 wcf 超时。我错过了什么?

4

1 回答 1

0

在时间戳字段上应用索引。

如果您已经有时间戳索引,请检查执行计划中用于此查询的索引。

索引提示只会在您的查询涉及连接表的情况下发挥作用,并且用于连接到另一个表的列与多个索引匹配。在这种情况下,数据库引擎可能会选择使用一个索引来进行连接,并且从调查中您可能会知道,如果它使用另一个索引,则查询将执行得更好。在这种情况下,您提供索引提示,告诉数据库引擎使用哪个索引。

示例代码使用索引提示:

select [Order].[OrgId], [OrderDetail].[ProductId]
  from [Order] 
 inner join [OrderDetail] **with(index(IX_OrderDetail_OrderId))** on [Order].[OrderId] = [OrderDetail].[OrderId]
于 2012-04-30T10:38:02.263 回答