开发者社区> 问答> 正文

MIN / MAX与ORDER BY和LIMIT

在以下查询中,您认为哪种方法更好?您的原因是什么(代码效率,更好的可维护性,更少的WTFery)...

SELECT MIN(field) FROM tbl;

SELECT field FROM tbl ORDER BY field LIMIT 1;

展开
收起
保持可爱mmm 2020-05-11 11:06:41 601 0
1 条回答
写回答
取消 提交回答
  • 在最坏的情况下,如果要查看未索引的字段,则使用MIN()需要对表进行一次完整的遍历。使用SORT并且LIMIT需要一个文件排序。如果针对大表运行,则预期的性能可能会存在显着差异。作为无意义的数据点,我的开发服务器上的106,000行表MIN()花了0.36秒SORT,LIMIT花了0.84秒。

    但是,如果您正在查看索引列,则很难注意到差异(两种情况下无意义的数据点均为0.00s)。但是,查看一下explain的输出,看起来好像MIN()可以简单地从索引中选取最小值(“ Select table Optimized away”和“ NULL”行),而SORTand LIMIT仍需要对索引进行有序遍历(106,000行)。实际的性能影响可能微不足道。

    它看起来像是MIN()要走的路-在最坏的情况下更快,在最好的情况下没有区别,它是标准SQL,最清楚地表达了您想要获得的价值。正如mson所提到的,似乎唯一希望使用SORT和的LIMIT情况是,您正在编写一个通用运算,该运算从任意列中查找前N个值或后N个值,因此不值得写出特殊情况的操作。来源:stack overflow

    2020-05-11 11:06:58
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Show Me The Money! Cost & Reso 立即下载
对 2000 多亿条数据做一次 group by 需要多久? 立即下载
对2000多亿条数据做一次Group By 需要多久 立即下载