Rom*_*man 9 java database sorting performance hibernate
假设我有一个包含VARCHAR类型字段的表.我需要从该表中按字母顺序对该表中的数据进行排序.
什么是最好的方法(性能):添加order by field到SQL查询或在数据已被提取时对数据进行排序?
我正在使用Java(使用Hibernate),但我不知道有关数据库引擎的任何信息.它可以是任何流行的关系数据库(如MySQL或MS Sql Server或Oracle或HSQL DB或任何其他).
表中的记录数量可能差异很大,但我们假设有5k记录.
UPD:二级休眠缓存(例如EHCache)如何支持排序数据?
如果对该字段建立索引,则平均DB在此任务中比Java更有效.另请注意,如果是纯显示,通常不会一次检索所有这些行,而是检索它的一个子集,以便可以通过分页显示它们.您也可以在DB级别执行此操作.用Java对数据进行排序需要将整个表拖入Java的内存中,您不希望这样做.
在Hibernate中,您可以订购的结果使用Criteria#addOrder(),并使用分页Criteria#setFirstResult()和Criteria#setMaxResults().例如
List users = session.createCriteria(User.class)
    .addOrder(Order.asc("username"))
    .setFirstResult(0) // Index of first row to be retrieved.
    .setMaxResults(10) // Amount of rows to be retrieved.
    .list();
| 归档时间: | 
 | 
| 查看次数: | 1663 次 | 
| 最近记录: |