lovetimiforever 2017-10-13 02:06 采纳率: 0%
浏览 1276

hibernate在查询oracle分区表效率慢

hibernate在查询oracle分区表的时候效率很慢,有没有什么设置优化的方法,具体案例如下:
我有一张表 INVENTORY_LOG_BACKUP 按月份做了分区。数据大概在2千多万的样子。
我有一段简单的hibernate查询代码如下:
Query query = HibernateUtil.getCurrentSession().createSQLQuery(" select\n" +
" count(*) as y0_ \n" +
" from\n" +
" INVENTORY_LOG_BACKUP this_ \n" +
" where\n" +
" this_.CREATE_DATE>=:fromDate \n" +
" and this_.CREATE_DATE<=:toDate \n" +
" \n");
query.setParameter("fromDate",DateUtils.parseDate("20170701",DateUtils.YYYYMMDD));
query.setParameter("toDate",DateUtils.parseDate("20170720",DateUtils.YYYYMMDD));
BigDecimal cc = (BigDecimal) query.uniqueResult();

这段代码执行了68秒,才得到结果,

    Query query = HibernateUtil.getCurrentSession().createSQLQuery(" select\n" +
            "        count(*) as y0_ \n" +
            "    from\n" +
            "        INVENTORY_LOG_BACKUP this_ \n" +
            "    where\n" +
            "        this_.CREATE_DATE>=to_date('20170701','yyyymmdd') \n" +
            "        and this_.CREATE_DATE<= to_date('20170720','yyyymmdd')\n" +
            " \n");

    BigDecimal cc = (BigDecimal) query.uniqueResult();

这段代码执行花费了 4秒就得到结果

Criteria criteria = HibernateUtil.getCurrentSession().createCriteria(InventoryLogBackUp.class);
criteria.add(Restrictions.ge(InventoryLog.COL_CREATE_DATE,DateUtils.parseDate("20170701",DateUtils.YYYYMMDD)));
criteria.add(Restrictions.le(InventoryLog.COL_CREATE_DATE,DateUtils.parseDate("20170720",DateUtils.YYYYMMDD)));

//获取总行数
Long count = (Long) criteria.setProjection(Projections.rowCount()).uniqueResult();

使用Criteria查询也消耗了60多秒时间。
用sql在数据库里面查询也只要几秒就得到结果了。hibernate在处理这样的查询上又什么特殊要注意的地方吗?

  • 写回答

2条回答 默认 最新

  • 软件求生 2017-11-09 03:45
    关注

    你试试不用java做日期转换,直接用字符串。
    因为,以前遇到的问题是,底层对date类型没有做优化。

    评论

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办