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