目前碰到一个问题,就是用hibernate自带的分页功能进行分页,通过Dialect进行优化过,其他的库比如Orable,Mysql都没有什么问题,但是sqlserver因为最后会生成效率比较低的select top方式,导致数据量比较大以后,比如100w+,是非常慢效率非常低的。之前我是用jdbc来单独进行处理,但是一直想知道大家在处理sqlserver分页的时候,如果用到了hibernate,有没有更好的解决办法?谢谢!

解决方案 »

  1.   

    sql2000的分页很烂的说,好像没什么好办法
      

  2.   

    我用的是sqlserver2005,直接用sql的话ROW_NUMBER() OVER的分页方法还是不错的,但是现在不知道如何能够让hibernate自己分页时候用到,我试图重写sqlserver的Dialect,但是发现getLimitString(String querySqlString, int offset, int limit)里面的offset值一直都是0,所以如果取得的数据量很大的话,就很慢了
      

  3.   

    hibernate 对 oracle 分页用的是 伪列 rownum对mysql 分页用的是limited,对sqlserver是不规则匹配sql。至于快慢就看sql和数据库配置了。或者你用其他方法进行优化一下大表
      

  4.   

    请教 楼上 什么叫做不规则匹配sql