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 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序