在查询前N个结果时,我可以要求数据库对结果进行排序,或者我可以自己对它们进行排序。
我阅读了很多关于数据库在应用内排序方面的性能和内存优势。但是,假设我编写了一个最佳排序代码,两个选项的性能是否相等? 两者都使用相同的CPU,两者都可以分配线程,并且两者都可以在内存中分配更多空间来执行排序。
我在这个主题中发现的所有答案都差不多 - 说 “只要让DB做,它会比你做得更好”,或者 “经验法则是在数据库中做任何事情,除非出现特殊需求,例如复杂的排序......”
那么,为什么选择数据库排序而非应用内排序(除了通过不要求数百万个表条目进行排序来节省网络带宽)?
答案 0 :(得分:1)
使用应用程序排序,您需要传输所有数据,使用数据库排序,您只需要传输N行!
数据库实现已经是最有效的排序算法。
如果索引已经存在,DMBS可以返回前N个而不对数据进行排序。
编辑:
如果您的数据集非常小并且可以存储在内存客户端,您可以通过应用程序对其进行订购。如果您需要重新排序数据而不需要从数据库刷新数据,那么这可能是一个很好的解决方案。
在其他情况下使用DB排序。