导读
由于项目需要,优化需要测试两个表的最小值。
使用
方式
使用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.294 | 0.314 | 0.298 | 0.297 | 0.295 | 0.304 | 0.297 | 0.569 | 0.506 | 0.352667 |
order by asc limit 1 | 0.299 | 0.299 | 0.308 | 0.296 | 0.297 | 0.299 | 0.299 | 0.536 | 0.488 | 0.346778 |
结论
经验证,在同时对该字段加索引的情况下,使用order by asc limit 1获取最小值,要比使用min函数获取最小值查询效率高。
补充说明
能使用union all就不要使用union,因为使用union的时候需要进行排序,会消耗一定时间。
END
chaohen
:www.yuque.com/heioky
搞定~