加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 数据库中数据排序的优缺点?

发布时间:2020-12-14 05:34:48 所属栏目:Java 来源:网络整理
导读:我们假设我有一个具有VARCHAR类型的表的表.而且我需要从该字段中按字母顺序获取该表中的数据. 什么是最佳方法(性能):将字段添加到SQL查询中,或者在已经获取数据时对数据进行排序? 我使用Java(使用Hibernate),但我不能告诉任何有关DB引擎的事情.它可以是任
我们假设我有一个具有VARCHAR类型的表的表.而且我需要从该字段中按字母顺序获取该表中的数据.

什么是最佳方法(性能):将字段添加到SQL查询中,或者在已经获取数据时对数据进行排序?

我使用Java(使用Hibernate),但我不能告诉任何有关DB引擎的事情.它可以是任何流行的关系数据库(如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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读