java的hibernate使用order by和Collections.sort()有什么区别?Collections.sort() 的时间复杂度是 O(nlogn) 并且使用 orderBy 必须是 O(1)。但是,数据库处理也必须有一些开销。在无法使用 orderBy 的情况下可以使用 Collections.sort() 吗?
2 回答
1
请记住,order by数据库上的 an 适用于所有行。虽然您只能将 Collections.sort 应用于“加载”行。
因此,如果您有 1000 行,并且您想根据顺序选择前 10 行,那么Collections.sort您需要在排序之前获取所有行,而order by您只需选择您想要的 10 行。
于 2020-03-15T14:48:10.990 回答
1
您可以使用任何一种。通常它们都应该是 O(nlogn) (因为数据库也必须应用排序算法并且它并不比 Collections 中的排序算法好)。
如果可能,我会使用数据库的 orderBy (*),因为您可以限制从数据库发送的数据量(至少在您只对匹配数据的第一部分感兴趣的情况下)。
(*) 在某些情况下,您希望实现“奇怪”的排序顺序(即“按第三个单词的第二个字母排序”),然后最好在 Java 中执行,但在大多数情况下 orderBy是足够的,因此是可取的。
于 2020-03-15T14:51:43.467 回答