sql 優化-查詢條件中有DATE_FORMAT的


查詢sql where 后的條件中有時間比較的如果使用了DATE_FORMAT這種函數的話就不會走索引查詢就會慢,優化方式:去掉了DATE_FORMAT函數,程序傳過來的字符串“2017-07-01 14:02:19”可以直接和數據庫中的時間字段值進行比較

優化前:

<sql id="paramsSql">
<if test="tradeNo != null"> and TRADE_NO = #{tradeNo}</if>
<if test="batchId != null"> and BATCH_ID = #{batchId}</if>
<if test="tradeStartTime != null"> and DATE_FORMAT(TRADE_TIME,'%Y-%m-%d %H:%i:%s') &gt;= DATE_FORMAT(#{tradeStartTime},'%Y-%m-%d %H:%i:%s')</if>
<if test="tradeEndTime != null"> and DATE_FORMAT(TRADE_TIME,'%Y-%m-%d %H:%i:%s') &lt;= DATE_FORMAT(#{tradeEndTime},'%Y-%m-%d %H:%i:%s')</if>
<if test="channelCode != null"> and CHANNEL_CODE = #{channelCode}</if>
<if test="channelNo != null"> and CHANNEL_NO = #{channelNo}</if>
<if test="extNo != null" > and EXT_NO=#{extNo} </if>
<if test="feeStatus != null"> and FEE_STATUS=#{feeStatus} </if>
<if test="chargeStartTime != null"> and DATE_FORMAT(CHARGING_TIME,'%Y-%m-%d %H:%i:%s') &gt;= DATE_FORMAT(#{chargeStartTime},'%Y-%m-%d %H:%i:%s')</if>
<if test="chargeEndTime != null"> and DATE_FORMAT(CHARGING_TIME,'%Y-%m-%d %H:%i:%s') &lt;= DATE_FORMAT(#{chargeEndTime},'%Y-%m-%d %H:%i:%s')</if>
<if test="feeRule != null">and FEE_RULE=#{feeRule}</if>
<if test="feeRuleName != null">and FEE_RULE_NAME = #{feeRuleName} </if>
<if test="startTime != null"> and DATE_FORMAT(CREATE_TIME,'%Y-%m-%d %H:%i:%s') &gt;= DATE_FORMAT(#{startTime},'%Y-%m-%d %H:%i:%s')</if>
<if test="endTime != null"> and DATE_FORMAT(CREATE_TIME,'%Y-%m-%d %H:%i:%s') &lt;= DATE_FORMAT(#{endTime},'%Y-%m-%d %H:%i:%s')</if>
<if test="feeRule != null" > and FEE_RULE=#{feeRule} </if>
</sql>

優化后:

<sql id="paramsSql">
<if test="tradeNo != null"> and TRADE_NO = #{tradeNo}</if>
<if test="batchId != null"> and BATCH_ID = #{batchId}</if>
<if test="tradeStartTime != null"> and TRADE_TIME &gt;= #{tradeStartTime}</if>
<if test="tradeEndTime != null"> and TRADE_TIME &lt;= #{tradeEndTime}</if>
<if test="channelCode != null"> and CHANNEL_CODE = #{channelCode}</if>
<if test="channelNo != null"> and CHANNEL_NO = #{channelNo}</if>
<if test="extNo != null" > and EXT_NO=#{extNo} </if>
<if test="feeStatus != null"> and FEE_STATUS=#{feeStatus} </if>
<if test="chargeStartTime != null"> and CHARGING_TIME &gt;= #{chargeStartTime}</if>
<if test="chargeEndTime != null"> and CHARGING_TIME &lt;= #{chargeEndTime}</if>
<if test="feeRule != null">and FEE_RULE=#{feeRule}</if>
<if test="feeRuleName != null">and FEE_RULE_NAME = #{feeRuleName} </if>
<if test="startTime != null"> and CREATE_TIME &gt;= #{startTime}</if>
<if test="endTime != null"> and CREATE_TIME &lt;= #{endTime}</if>
<if test="feeRule != null" > and FEE_RULE=#{feeRule} </if>
</sql>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM