Hibernate 在SQLServer2000环境下分页存在的问题

07-01-24 lyojbuilder
在 Oracle环境下,Hibernate的分页机制是效率最高的,使用Oracle内置的rownum来分页,每次只是取出显示时候必须的数据即可,即从第N条到第N+m条记录。

在SQLServer2000环境下,他的分页机制存在问题,通过跟踪Hibernate打印出的语句发现,每次分页的时候,Hibernate会把从第1条到第N+m条的数据全部取出来,然后在取出的数据做程序处理,返回给调用者的数据是经过 Hibernate处理后的,而不是放在数据库处理的。例如:取第5条到第10条记录,Hibernate会从数据库把第1条到第10条记录取出来,然后把里面的5到10条记录用List处理后返回给调用者,导致分页的时候,越往后翻页,效率越低。

大家有发现的吗?

    

leoyu
2007-02-02 10:07
MSSQL没有ORACLE或MYSQL类型的ROWNUM或LIMIT关键字.MSSQL分页就是这样的,使用TOP来分页是MSSQL效率较高的方案了.这是MSSQL自己的问题

lyojbuilder
2007-02-10 15:05
我后来查了很多资料,的却是这样。

开始是微软自己把 市场定位成只能做小型应用的~

或者说 oracle的rownum是微软那些工程师无法实现的?居然也有微软实现不料的技术,mysql在这点的技术都实现了.

Coolyu0916
2007-02-10 20:51
楼上的

mssql是跟sybase合作共同开发的

所以一开始设计根本就不是为了中小型应用

而且也没有那个DBMS是为了中小型应用而做的

rownum只是oracle的一个实现方法

db2也没有,难道也要说db2也是为了中小应用??

猜你喜欢