zoukankan      html  css  js  c++  java
  • 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>

  • 相关阅读:
    【小模块】公告滚动并暂停
    w3school的PHP教程提炼(一)PHP基础
    Nicholas C. Zakas:介紹CSS Lint(检测工具)
    【小模块】回到顶部的页面跟随按钮(仿淘宝)
    【小模块】内容循环滚动(仿新浪微博未登录首页滚动微博显示)
    前端管窥:图片Sprite管理
    《锋利的jQuery》要点归纳(六)插件的使用和写法
    CSS reset 一份很全的样式表
    《锋利的jQuery》要点归纳(五)jQuery与ajax的应用(上)
    《锋利的jQuery》要点归纳(五)jQuery与ajax的应用(下)
  • 原文地址:https://www.cnblogs.com/sailormoon/p/7239472.html
Copyright © 2011-2022 走看看