有个表有几亿条数据!使用jdbc的时候 1秒就可以查询出来 
使用hibernate  25秒左右才能查出来``但在hibernate.xml文件中把<property name="show_sql">true</property>打开
出来的sql语句放plsql中查结果速度也很快
Hibernate: select * from ( select t.SCAN_DATE as SCAN1_0_, t.SCAN_SITE as SCAN2_0_, t.BILL_CODE as BILL3_0_, t.LISTING_CODE as LISTING4_26_0_, t.SUB_BILL_CODE as SUB5_26_0_, t.TRANSFERE_BILL_CODE as TRANSFERE6_26_0_, t.OWNER_BAG_NO as OWNER7_26_0_, t.SCAN_TYPE as SCAN8_26_0_, t.PRE_OR_NEXT_STATION as PRE9_26_0_, t.SCAN_MAN as SCAN10_26_0_, t.REGISTER_DATE as REGISTER11_26_0_, t.DISPATCH_OR_SEND_MAN as DISPATCH12_26_0_, t.CUSTOMER_NAME as CUSTOMER13_26_0_, t.SEND_SITE as SEND14_26_0_, t.MIDDLE_TRANSFER_CENTER as MIDDLE15_26_0_, t.PIECE as PIECE26_0_, t.WEIGHT as WEIGHT26_0_, t.GOODS_TYPE as GOODS18_26_0_, t.FAST_TYPE as FAST19_26_0_, t.CLASS as CLASS26_0_, t.TRANSFER_OR_DISPATCH_FEE as TRANSFER21_26_0_, t.NET_MANAGE_FEE as NET22_26_0_, t.OTHER_FEE as OTHER23_26_0_, t.BL_CHECKING_ID as BL24_26_0_, t.BL_BALANCE_ID as BL25_26_0_, t.BL_RETURN_BILL_ID as BL26_26_0_, t.BL_UNTREAD_PIECE_ID as BL27_26_0_, t.BL_ELECTRON_ID as BL28_26_0_, t.BL_NO_INPUT_BILL_ID as BL29_26_0_, t.BL_RETURN_WRITE_ID as BL30_26_0_, t.BL_LOCK_ID as BL31_26_0_, t.MODIFIER as MODIFIER26_0_, t.MODIFY_DATE as MODIFY33_26_0_, t.DESTINATION as DESTINA34_26_0_, t.DISPATCH_SITE as DISPATCH35_26_0_, t.REMARK as REMARK26_0_, t.SCAN_MAN_CODE as SCAN37_26_0_, t.MODIFIER_CODE as MODIFIER38_26_0_, t.MODIFY_SITE as MODIFY39_26_0_, t.OTHER_FEE1 as OTHER40_26_0_, t.OTHER_FEE2 as OTHER41_26_0_, t.OTHER_FEE3 as OTHER42_26_0_ from tab_scan_come t where t.scan_date between ? and ? and t.scan_type=? and t.scan_site=? ) where rownum <= ?把这个sql写到jdbc中数据也很快!真是郁闷了``帮忙看看```

解决方案 »

  1.   

    我觉得要将 Hibernate 用在大数据量的应用上,需要非常高的水平才能做得到。如果减少查询结果,hibernate 是不是出来的快些。如果是的话,就说明在包装查询结果的过程中花了一些时间。或者试试看用 Hibernate 直接执行这个 SQL 而不是让其自动生成,会不会快些。
      

  2.   

    是hb的转换慢了,JDBC查出来的原始数据类型。而hb要把原始数据一行一行封装成对象,应该是这个过程慢了。简单说数据查询到JVM内存中以后慢了
      

  3.   


    我使用的是session.createSQLQuery接口```
      

  4.   

    我看了下运行程序后oracle  cup咱用量很大!连续持续25秒````到底是什么原因啊`有点昏迷了!
      

  5.   


    如果说是hibernate速度慢``
    那么为什么数据库执行需要25秒`我看了进程的`非常奇怪!也谢谢你的回答!
      

  6.   

    Hibernate本身的问题
    还是用JDBC吧
      

  7.   

    建议直接使用JDBC,可以从SQL的书写,以及建立索引方面来解决效率问题
      

  8.   

    我觉得要将 Hibernate 用在大数据量的应用上,需要非常高的水平才能做得到。 如果减少查询结果,hibernate 是不是出来的快些。如果是的话,就说明在包装查询结果的过程中花了一些时间。 或者试试看用 Hibernate 直接执行这个 SQL 而不是让其自动生成,会不会快些。
      

  9.   


    我的猜测:
    hibernate使用ResultSetMetadata来判断返回的标量值的实际顺序和类型。使用addScalar()避免~
      

  10.   

    用sniff看看HB和JDBC发送过去的包有什么不同?