max vs limit更有效

时间:2014-02-13 05:28:03

标签: mysql sql

这可能是一个非常简单的问题,但没有找到完美的答案。 查询是找到第二高的工资,可以通过使用max和限制两者来完成..

使用MAX

 select max(salary) from table1 where 
 salary < (select max(salary) from table1);

使用限制

select salary from table1 where 
salary < (select max(salary) from table1)
order by salary desc
limit 1;

考虑到有1000个记录,那么哪个查询会更好,耗时更少。

提前致谢。

2 个答案:

答案 0 :(得分:5)

这两种查询都不是正确的方法。您从所有记录中薪水低于MAX(薪水)的记录中获得MAX(薪水)。换句话说,薪水第二高。这样做的方法就是这样:

SELECT salary FROM table1 ORDER BY salary DESC LIMIT 1,1

如果你真的想要最大值,那就去做

SELECT MAX(salary) FROM table1

这里不需要子查询。无论如何,请确保您已将工资列编入索引,否则无论您如何运行它,查询都会很慢。

答案 1 :(得分:2)

在我看来,使用MAX的第一个查询会更有效。

第二个查询需要对结果进行排序,结果有自己的开销。我已经看到聚合查询通常比选择所有查询更有效。

免责声明:这完全基于我对SQL查询的理解,但我没有做任何基准测试。