记一次查询优化,mybatis查询oracle卡,直接拿sql数据库查询很快

调整前

<select id="getList" resultMap="BaseResultMap" parameterType="java.util.Map">
    select
    <include refid="Base_Column_List" />
    from Table1
    <where>
        <if test="start_date!= null">
            and start_date <![CDATA[ >= ]]> #{start_date, jdbcType=TIMESTAMP}
        </if>
    </where>
</select>

调整后

<select id="getList" resultMap="BaseResultMap" parameterType="java.util.Map">
    select
    <include refid="Base_Column_List" />
    from Table1
    <where>
        <if test="start_date!= null">
            and start_date <![CDATA[ >= ]]>  to_date(#{start_date},'yyyy-mm-dd hh24:mi:ss')
        </if>
    </where>
</select>

说明:

1、Table1表的数据量很大。

2、start_date字段是DATE类型,建有索引。

原因:

调整前,指定了类型(和数据库start_date字段的类型不一致),数据库执行查询时发生了隐式转换,索引失效,所以查询慢。

ps:

因为我的查询条件需要精确到时分秒,所以是如上调整,如果查询条件只需要精确到天,可以如下调整

<select id="getList" resultMap="BaseResultMap" parameterType="java.util.Map">
    select
    <include refid="Base_Column_List" />
    from Table1
    <where>
        <if test="start_date!= null">
            and start_date <![CDATA[ >= ]]> #{start_date, jdbcType=DATE}
        </if>
    </where>
</select>

 

 

 

posted @   天天代码码天天  阅读(184)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示