简单的选择查询耗时太长

时间:2012-04-30 06:41:34

标签: sql-server

我有一个大约18k行的表,一个星期,另一周有22k行。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

示例代码使用索引提示:

select [Order].[OrgId], [OrderDetail].[ProductId]
  from [Order] 
 inner join [OrderDetail] **with(index(IX_OrderDetail_OrderId))** on [Order].[OrderId] = [OrderDetail].[OrderId]