这些陈述之间有什么明显的区别(速度/效率)吗?假设列已被索引。

SELECT MAX(someIntColumn) AS someIntColumn


SELECT someIntColumn ORDER BY someIntColumn DESC LIMIT 1

最佳答案

这在很大程度上取决于sql实现中的查询优化器。充其量,他们也会有同样的表现。然而,通常情况下,第一个查询可能要快得多。
第一个查询本质上要求dbms检查someIntColumn中的每个值并选择最大的值。
第二个查询要求dbms将someIntColumn中的所有值从最大值排序到最小值,并选择第一个值。根据表中的行数和列上索引的存在(或缺少),这可能会明显慢一些。
如果查询优化器足够复杂,能够意识到第二个查询相当于第一个查询,那么您就幸运了。但是,如果将应用程序重定目标到另一个dbms,则可能会出现意外的低性能。

10-08 19:41