mybatis sql查询条件有时间时查询效率非常慢

最近在进行开发时发现一个奇葩的问题,sql在数据库查询速度不过1秒都不到在在后台却发现非常慢,通过打印dao方法时间和看mybatis log发现速度确实是很慢不是其他问题,然后一步步测试,首先加上<![CDATA[]]> 加在整个sql都没用,然后加上<if></>判断发现时间快了点,但还是属于慢,这里发现很奇葩的问题,比如网上查询时间段说什么>,=要转义,经过一步步测试我可以直接写> ,不过<需要转义成&lt; 实践才是那什么真理的,通过打印sql执行时间明确了确实是执行速度慢而不是转json或者其他环节慢,然后通过更换<![CDATA[]]>,还有&lt; 等转义字符发现问题依旧,然后通过写死时间格式为2017-09-25 00:00:00,发现这样速度跟数据库查询一致了,加上参数后就变慢了,这让我确定问题是存在于mybatis底层,可惜我没时间也没能力研究底层,这问题只能将解决方法放在这里,具体原因我会寻求mybatis社区发现这个问题,如果也有大神知道的话希望告诉我,将#换成$发现这问题才消失。真是很无语。

代码放下吧

	<!-- 查询部分sql -->
	<sql id="queryCriteria">
		<if test="StartOperateTime != null">
				 and ta.OperateTime >= '${StartOperateTime}'  
		</if>
		 <if test="EndOperateTime != null">
		and ta.OperateTime  &lt;= '${EndOperateTime}'
		</if> 
		<if test="CompanyName != null">
		and tv.DriverName like '%${TrsptDriverName}%'
		</if>
	</sql>

最后总结下问题:1:不能随便信网上的东西xml中可以写>,  <需要转义 2:mybatis原理需要探究下。

MyBatis分页查询在处理大量数据可能会变得越来越的原因有以下几点。 首先,当分页查询的页数逐渐增加,数据库需要处理更多的数据,这会导致查询的执行时间逐渐增加。特别是当查询条件没有有效的索引或索引不匹配查询语句,数据库需要扫描更多的数据页,这将导致查询效率降低。 其次,如果数据库中的数据量逐渐增加,查询可能会变得越来越。当数据量增加,数据库需要更多的时间来读取、传输和处理数据。此外,如果数据表中存在大量的重复数据、未使用的索引或复杂的连接查询,都会导致查询。 另外,单个查询的数据量也会影响查询速度。如果查询结果集中有大量的数据需要传输给应用程序,会导致查询。此,可以考虑对查询结果进行分批处理,减少一次性传输的数据量。 还有可能的原因是查询语句的性能优化不充分,没有使用合适的索引或优化的查询语句。可以通过分析查询语句的执行计划,找出导致查询的原因,并对查询语句进行调优,如添加合适的索引、优化SQL语句的写法等。 总结起来,MyBatis分页查询的原因可能是页数增加导致的查询数据量增大、数据库中数据量增加、单次查询数据量大以及查询语句性能优化不充分。为了提升查询性能,可以考虑使用合适的索引、优化查询语句、分批处理查询结果以及合理控制查询数据量。
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值