Springboot用pagehelper分页插件查询Oracle的速度比较慢的解决办法
pagehelper分页插件查询数据的时候,会将你mybatis中的sql在包一层分页,最后为:
SELECT * FROM ( SELECT TMP_PAGE.*, ROWNUM PAGEHELPER_ROW_ID FROM ( SELECT * FROM 你的sql表 ) TMP_PAGE) WHERE PAGEHELPER_ROW_ID <= 10 AND PAGEHELPER_ROW_ID > 0
慢的原因就是后面PAGEHELPER_ROW_ID参数的位置。
解决办法,在application.properties中配置:
pagehelper.helperDialect=oracle9i
你再次打印sql,会变成如下格式:
SELECT * FROM ( SELECT TMP_PAGE.*, ROWNUM PAGEHELPER_ROW_ID FROM ( SELECT * FROM 你的sql表) TMP_PAGE WHERE ROWNUM <= 10 ) WHERE PAGEHELPER_ROW_ID > 0
发现没有,PAGEHELPER_ROW_ID位置发生了变化,这样速度就明显提升了。
另springboot打印sql日志是:
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
另还有一个地方可以优化
如果数据实在太多,可以重写一个查询总数的sql,只需要将之前的<select>语句重写拷贝一个,将id改成之前的名称+_COUNT,pagehelper会被自动扫描到,当查询总数的时候会直接查询你写的这个,具体代码如下:
<select id="selectList_COUNT" parameterType="java.util.HashMap" resultType="Long"> SELECT COUNT(1) FROM TABLE </select>
正在加载评论...
相关文章
- 配置@ConfigurationProperties后读取yml文件的参数...
- Caused by: java.lang.NoClassDefFoundError: Coul...
- springboot加入SSL证书设置https访问
- Springboot用pagehelper分页插件查询Oracle的速度...
- shiro的登录账号密码校验过程,SimpleAuthenticati...
- Shiro控制没有登录时,返回指定JSON格式数据
- SpringBoot中mybatis返回的Date时间格式化
- ClassNotFoundException: org.aspectj.lang.annota...
- org.apache.shiro.UnavailableSecurityManagerExce...
栏目列表
推荐阅读
- java的StringEscapeUtils转义与反转义
- Mybatis的foreach事列,如何获取foreach的index值
- Java Ehcache缓存的timeToIdleSeconds和timeToLiveSeconds区别
- errcode: 40001, errmsg: invalid credential, access_token is invalid or not latest rid: 5f6981c2-6cc9cb20-6833977a
- 服务器侦听端口 netstat -na 命令详解
- Java四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor
- tomcat启动maven工程报错-Updating status for Tomcat v7.0 Server at localhost...
- Mybatis异常There is no getter for property named 'XXX' in 'class java.lang.String'
- Java后台获取当前访问客户端的真实IP地址(外网或内网地址)
- com.googlecode.aviator.AviatorEvaluator规则引擎用法
- java发送http的get、post请求
- StringSubstitutor替换占位符,处理SQL参数
- java拦截器HandlerInterceptor的preHandle、postHandle与afterCompletion三个方法
- java中Session缓存和Cache缓存的区别
- Java8对象集合转List<Integer>id集合,转List<String>name集合,List<Class>对象集合
- Java导出excel利用jxls合并单元格jx:mergeCells实现表格嵌套技术
- java图片文件base64流之间的互转帮助类源码下载
- 利用ObjectMapper,将json数组转List<Map<String,Object>>
- java的DES加密解密辅助类
- Java Ecache缓存工具类源码下载