在应用程序中排序与在DB中排序

时间:2017-11-08 09:08:16

标签: sql sorting database-performance

在查询前N个结果时,我可以要求数据库对结果进行排序,或者我可以自己对它们进行排序。

我阅读了很多关于数据库在应用内排序方面的性能和内存优势。但是,假设我编写了一个最佳排序代码,两个选项的性能是否相等? 两者都使用相同的CPU,两者都可以分配线程,并且两者都可以在内存中分配更多空间来执行排序。

我在这个主题中发现的所有答案都差不多 - 说 “只要让DB做,它会比你做得更好”,或者 “经验法则是在数据库中做任何事情,除非出现特殊需求,例如复杂的排序......”

那么,为什么选择数据库排序而非应用内排序(除了通过不要求数百万个表条目进行排序来节省网络带宽)?

1 个答案:

答案 0 :(得分:1)

使用应用程序排序,您需要传输所有数据,使用数据库排序,您只需要传输N行!

数据库实现已经是最有效的排序算法。

如果索引已经存在,DMBS可以返回前N个而不对数据进行排序。

编辑:

如果您的数据集非常小并且可以存储在内存客户端,您可以通过应用程序对其进行订购。如果您需要重新排序数据而不需要从数据库刷新数据,那么这可能是一个很好的解决方案。

在其他情况下使用DB排序。