【发布时间】:2018-04-20 21:28:48
【问题描述】:
查询前 N 个结果时,我可以让 DB 对结果进行排序,或者我可以自己对结果进行排序。
我阅读了很多关于数据库相对于应用内排序的性能和内存优势的信息。但是,假设我编写了一个最佳排序代码,这两个选项的性能不相等吗? 两者都使用相同的 CPU,都可以分配线程,并且都可以在内存中分配更多空间来执行排序。
我在该主题中找到的所有答案都差不多 - 说 “让数据库去做吧,它会比你做得更好”,或者 “经验法则是在数据库中做任何事情,除非出现特定需求,例如复杂的排序......”
那么,为什么选择 DB 排序而不是应用内排序(除了通过不要求对数百万个表条目进行排序来节省网络带宽之外)?
【问题讨论】:
-
在排序方面,您无法超越现代 dbms。
-
你真的可以对应用程序中的十亿行进行排序以找到前 N 个吗?
-
Alyways 以 db 排序。
-
Top n通常由 RDBMS 优化;例如。在 SQL Server 中,如果 n 小于 500,则不会进行完整排序。 -
@yuz:数据库经过优化,可以处理不适合内存的数据。您的应用程序是否为此进行了优化?
标签: sql sorting database-performance