【问题标题】:Difference between orderBy of hibernate and Collections.sort()hibernate的orderBy和Collections.sort()的区别
【发布时间】:2020-03-15 14:27:43
【问题描述】:

hibernate 的 order by 和 Java 的 Collections.sort() 有什么区别? Collections.sort() 的时间复杂度是 O(nlogn) 并且使用 orderBy 必须是 O(1)。但是,数据库处理也必须有一些开销。在无法使用 orderBy 的情况下可以使用 Collections.sort() 吗?

【问题讨论】:

  • Is it okay to use Collections.sort() in cases where using orderBy is not possible? - 是的,为什么不呢?
  • orderBy() 仅在数据库服务器可以使用索引时进行优化。

标签: java hibernate orm


【解决方案1】:

您可以使用任何一种。通常它们都应该是 O(nlogn) (因为数据库也必须应用排序算法,它并不比 Collections 中的排序算法好)。

如果可能,我会使用数据库的 orderBy (*),因为您可以限制从数据库发送的数据量(至少在您只对匹配数据的第一部分感兴趣的情况下) .

(*) 在某些情况下,您希望实现“奇怪”的排序顺序(即“按第三个单词的第二个字母排序”),然后最好在 Java 中执行,但在大多数情况下 orderBy 就足够了,因此更可取。

【讨论】:

    【解决方案2】:

    请记住,数据库上的order by 适用于所有行。虽然您只能将 Collections.sort 应用于“已加载”行。

    所以,如果您有 1000 行,并且您想根据顺序选择前 10 行,要使用 Collections.sort,您需要在排序之前获取所有行,而使用 order by 您只需选择 10你想要的。

    【讨论】:

      猜你喜欢
      • 2016-04-26
      • 2012-08-28
      • 2013-02-06
      • 1970-01-01
      • 2011-11-17
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-01
      相关资源
      最近更新 更多