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

发布于 2024-12-05 20:54:53 字数 181 浏览 0 评论 0原文

我正在处理一个当前包含 100000 条记录的表,并且将来会越来越多,现在我的客户想要最新的前 10 条记录...

使用 top 子句会降低性能,并且由于这是移动应用程序,因此性能唯一的问题是,是否有任何替代方案以及获取最新前 10 条记录的最佳方法,并且排序可能会导致性能损失,

这两者是否有任何最佳性能替代方案。

i am working on a table which currently contains 100000 records, and will be more and more in future, now my clients want the LATEST TOP 10 RECORDS...

using top clause diminishes the performance, and as this is the mobile application, performance is the only concern, so is there any alternate and the best way for getting Latest Top 10 records also the order by could result in loss of performance

does these two have any best performance alternative..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

似狗非友 2024-12-12 20:54:53

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

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

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

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

Using the TOP clause hurts performance only because you don't have the proper index on the date field (or whatever field you are using to identify the 10 latest). For a query like:

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

You'll need (ideally) an index on:

(OrderDate, OrderID) INCLUDE (TotalPrice, Shipping, Status)
記憶穿過時間隧道 2024-12-12 20:54:53

我认为最好的选择是使用另一个有最新 10 条记录的表。

因此,当您的应用程序插入一条记录时,它必须将其记录在两个表中......大的一个和前 10 个表。或者可以做一个触发器来完成这项工作。

I think the best option is use another table where you have the latest 10 records.

So, when your app insert a record, it has to record it in both tables... The big one and the top 10 one. Or it is possible to do a trigger that do this work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文