我有一个表,某个星期大约有18k行,另一个星期有22k行。
我使用视图和索引来检索数据,如下所示
SELECT TOP 100 * FROM my_view
WHERE timestamp BETWEEN @date1 AND
@date2但不知何故,22k的那一周检索数据更快(大约3-5秒),而另一周至少需要一分钟。这会导致我的wcf超时。我遗漏了什么?
发布于 2012-04-30 18:38:02
在时间戳字段上应用索引。
如果你已经有了时间戳的索引,那么在执行计划中检查这个查询所使用的索引。
仅当查询涉及连接表,并且用于连接其他表的列与多个索引匹配时,索引提示才会起作用。在这种情况下,数据库引擎可能会选择使用一个索引来进行连接,根据调查,您可能知道如果使用另一个索引,查询的性能会更好。在这种情况下,您需要提供索引提示,告诉数据库引擎要使用哪个索引。
示例代码使用索引提示:
select [Order].[OrgId], [OrderDetail].[ProductId]
from [Order]
inner join [OrderDetail] **with(index(IX_OrderDetail_OrderId))** on [Order].[OrderId] = [OrderDetail].[OrderId]https://stackoverflow.com/questions/10379519
复制相似问题