【问题标题】:Is it better to perform sort logic for List through orderby in the database, or is it better to use Collection.sort() in Java logic?在数据库中通过orderby对List进行排序逻辑更好,还是在Java逻辑中使用Collection.sort()更好?
【发布时间】:2023-01-14 09:58:52
【问题描述】:
当你想对一些数据进行排序并返回时,你应该使用哪种逻辑进行排序?
当接收任何类型的数据作为列表时,在DB端通过Order by接收排序后的数据并按原样使用它更好吗?还是在DB端不使用orderby,原样接收数据,然后在spring端排序更好?
参考用的是spring-boot,jpa,QueryDSL,DB是mysql。
如果你能告诉我更好的方法和原因,我将不胜感激!!!
【问题讨论】:
标签:
database
spring-boot
jpa
spring-data-jpa
querydsl
【解决方案1】:
一般来说,能用SQL做就用SQL做。
数据库引擎在快速高效地执行 SQL 方面确实令人印象深刻。
仅当行数相当有限且 order by 在 SQL 中执行起来极其复杂时,我才会考虑在 JVM 中执行
【解决方案2】:
这个答案是对@Jens Schauder 答案的补充。一个好的架构会将数据访问与业务逻辑以及任何超出范围的内容(网络层等)分开。
当您从数据库抽象层收集数据时,请确保使用保留顺序的数据结构。还要确保在数据通过应用程序时保留此顺序。
我见过这样的场景,数据访问层对数据进行排序,然后工程师使用一个无序的集合,E.G. Set,而不是List。
好的单元测试会让你看对的。