Sql Server 2008 中 Top 子句的最佳替代方案?
我正在处理一个当前包含 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用 TOP 子句只会损害性能,因为您在日期字段(或用于识别最新 10 个字段的任何字段)上没有正确的索引。对于如下查询:
您需要(理想情况下)以下索引:
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:
You'll need (ideally) an index on:
我认为最好的选择是使用另一个有最新 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.