问题描述
ibatis中,用什么方式查询分页效率高? 我的数据量比较大。
解决方案
ibatis 又不是数据库,它又不知道如何分页。。他只是一个sql builder比如mysql里面的分页是用limit offset来做的,你就用ibatis写一个limit offset好了其它类型的数据库以此类推。与其说分页的效率,不如说是你sql语句查询的效率如何,最简单看有查询有没有用到索引,在mysql里面用explain select xxxx from xxx where
解决方案二:
三层嵌套是oracle实现方式limit offset是mysql里用的
解决方案三:
我有些不解了,分页不是也面上指定现实多少数据么?limit offset不就完了么?? 嵌套的select 多麻烦阿,ibatis缓存结果神马的,多麻烦阿
解决方案四:
其他数据库可以采用类似的数据库分页方式,这种方式快
解决方案五:
如Oracle分页可以这么写,currentPage为当前页号,pageSize为每页记录数<select id="findUsers" parameterClass="HashMap" resultClass="HashMap"> select * from(select t.*, rownum rn from(select a.name,a.sex from usercount) t where rownum <![CDATA[<=]]> #currentPage# * #pageSize# ) where rn <![CDATA[>]]> (#currentPage# - 1) * #pageSize#</select>其中,分页部分语句是固定的,只需要替换内部的sql语句select * from(select t.*, rownum rn from(只需要替换这里的sql语句) t where rownum <![CDATA[<=]]> #currentPage# * #pageSize# ) where rn <![CDATA[>]]> (#currentPage# - 1) * #pageSize
解决方案六:
#数据量大应该考虑每次只读一页数据的方式来分页~在ibatis配置文件里写好分页SQL就好~效率的话 写好SQL可以看看执行计划~ 看有没有使用到索引,如果没,新建适当的索引
解决方案七:
ibatis分页解决方式是通过JDBC ResultSet的next方法或absolute方法来实现,效率和资源的消耗比不上sql语句层面的分页。给你一篇文章:http://www.blogjava.net/libin2722/articles/192504.html根据不同数据库实现的不同分页方言,建议参考Hibernate源码。