Sql Server 2008中Top Topuse的最佳替代方案?

时间:2011-09-20 20:20:25

标签: sql-server-2008 sql-order-by clause

我正在制作一张目前包含100000条记录的表格,将来会越来越多,现在我的客户想要最新的十大记录......

使用top子句会降低性能,因为这是移动应用程序,性能是唯一的问题,因此有任何备用和最佳方式获取最新的前10名记录也可能导致性能损失< / p>

这两者是否有任何最佳表现选择..

2 个答案:

答案 0 :(得分:5)

使用TOP子句会损害性能,因为您没有在日期字段上使用正确的索引(或者您用于识别最新的10个字段)。对于像这样的查询:

SELECT TOP 10 OrderID, OrderDate, TotalPrice, Shipping, Status
FROM CustomerOrder
ORDER By OrderDate DESC

您需要(理想情况下)索引:

(OrderDate, OrderID) INCLUDE (TotalPrice, Shipping, Status)

答案 1 :(得分:3)

我认为最好的选择是使用另一张表,其中包含最新的10条记录。

因此,当你的应用程序插入一条记录时,它必须在两个表中记录它...大一个和前十个。或者可以执行此操作的触发器。