1. 程式人生 > >mybatis sql查詢條件有時間時查詢效率非常慢

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原理需要探究下。