我正在处理一个当前包含 100000 条记录的表,并且将来会越来越多,现在我的客户想要最新的 TOP 10 记录...
使用 top 子句会降低性能,因为这是移动应用程序,所以性能是唯一的问题,因此是否有任何替代和最佳方式来获取最新的前 10 名记录,而且排序可能会导致性能损失
这两个有没有最好的性能选择..
我正在处理一个当前包含 100000 条记录的表,并且将来会越来越多,现在我的客户想要最新的 TOP 10 记录...
使用 top 子句会降低性能,因为这是移动应用程序,所以性能是唯一的问题,因此是否有任何替代和最佳方式来获取最新的前 10 名记录,而且排序可能会导致性能损失
这两个有没有最好的性能选择..
使用 TOP 子句只会损害性能,因为您在日期字段(或您用来识别 10 个最新日期的任何字段)上没有正确的索引。对于像这样的查询:
SELECT TOP 10 OrderID, OrderDate, TotalPrice, Shipping, Status
FROM CustomerOrder
ORDER By OrderDate DESC
您将需要(理想情况下)以下索引:
(OrderDate, OrderID) INCLUDE (TotalPrice, Shipping, Status)
我认为最好的选择是使用另一个有最新 10 条记录的表。
因此,当您的应用程序插入一条记录时,它必须在两个表中都记录它……大的一个和前 10 的一个。或者可以做一个触发器来完成这项工作。