小编典典

使用SQL排序列表还是将其作为集合?

sql

我的数据库中有一些带有日期的条目。什么是最佳?:

  • 使用sql语句提取它们并应用order by
  • 使用sql获取列表,然后在应用程序中使用sql进行排序collection.sort

谢谢


阅读 198

收藏
2021-04-22

共1个答案

小编典典

在某种程度上,它取决于整个集合中有 多少个 值。如果它是20到30个值,那么您可以在任何地方进行排序-
即使是相对较差的排序算法也可以快速做到这一点(尽管避免Stooge排序;这很糟糕)-因为这就是您所需要的数据块大小的排序可能期望实际获取一个服务响应。

但是,一旦进入更大的数据集,您就需要进行更仔细的计划。特别是,如果不需要,您希望避免移动数据。如果数据当前仅存在于数据库中,那么您真的不希望仅将其排序(相对昂贵的操作)就将其全部提取到客户端中,然后实际上将其全部丢弃。实际情况是最好先将数据排序在数据库中,这样才能轻而易举地进行整理。用关系数据库的术语来说,保持数据排序与保持数据索引在功能上是相同的。实际上,您可以在数据上具有多个索引,从而可以快速进行甚至非常复杂的查询。(NoSQL
DB的种类更多;有些甚至不支持保持数据排序的概念。

因此,回到您的问题,您可能想尝试不对应用程序中的数据进行排序:对于大多数数据而言,适当的索引可能会更有效,因为它使您的代码 甚至不会查看不需要的数据
。但是,如果由于其他原因必须将所有内容都提取到应用程序中,并且无法将其带入预排序中,则没有理由避免自己对其进行排序:Java的排序算法既高效又稳定。但是您应该
测量 以新顺序从数据库中获取数据是否更快。(问题是数据库开销是否超过了重新排序的超线性成本;很多问题都在答案是``容易’‘的领域。)

需要权衡的另一件事是,让代码不对自身进行排序是否更简单,而总是将其委托给数据库是否更简单。使您的代码更简单(并且更没有错误)是一个很好的目标。’‘

2021-04-22