例如,我们有一个问题是要找到表中薪水第二高的员工。这是我的桌子
id name dept salary
1 Ram HR 10000
2 Amrit MRKT 20000
3 Ravi HR 30000
4 Nitin MRKT 40000
5 Varun IT 50000
然后我会写一个这样的子查询。
select e_name,salary from employee
where salary = (select max(salary) from employee
where salary <> (select max(salary) from employee));
我会像这样使用限制和偏移:
select e_name, salary from employee order by salary desc limit 1 offset 1;
以下哪项会更有效率?为什么?
在性能和查询调优方面存在很多变数,因此无法保证在任何给定时间,如果不测试和观察查询计划,哪一个对您的数据的性能更高。
但总的来说,使用
LIMIT
and的第二个示例OFFSET
可能更有效,因为它只查询employee
表一次,而不是第一个示例中的 3 次。