优化-取两张表时间的最小值

1,076 阅读1分钟

导读


由于项目需要,优化需要测试两个表的最小值。

使用


方式

使用min函数

# 方式二
 SELECT DATE_FORMAT(min(time),'%Y年%m月%d日') as minTime
        FROM(
            SELECT insert_time as time FROM aa
            UNION ALL
            SELECT insert_time as time FROM bb
        )t;

使用order by asc limit 1


# 方式二
 SELECT DATE_FORMAT(min(time),'%Y年%m月%d日') as minTime
        FROM(
            SELECT insert_time as time FROM aa
            UNION ALL
            SELECT insert_time as time FROM bb
        )t;

测试及结论

实验

经实验,测试查询时间如下:

方式时间(s)平均值(s)
min()函数0.2940.3140.2980.2970.2950.3040.2970.5690.5060.352667
order by asc limit 10.2990.2990.3080.2960.2970.2990.2990.5360.4880.346778

结论


经验证,在同时对该字段加索引的情况下,使用order by asc limit 1获取最小值,要比使用min函数获取最小值查询效率高。

补充说明

能使用union all就不要使用union,因为使用union的时候需要进行排序,会消耗一定时间。

END


chaohenwww.yuque.com/heioky


搞定~