例如,我们有一个问题,要找到表中薪水第二高的员工。这是我的桌子
id name dept salary
1 Ram HR 10000
2 Amrit MRKT 20000
3 Ravi HR 30000
4 Nitin MRKT 40000
5 Varun IT 50000
Run Code Online (Sandbox Code Playgroud)
然后我会写一个这样的子查询。
select e_name,salary from employee
where salary = (select max(salary) from employee
where salary <> (select max(salary) from employee));
Run Code Online (Sandbox Code Playgroud)
我会像这样使用限制和偏移:
select e_name, salary from employee order by salary desc limit 1 offset 1;
Run Code Online (Sandbox Code Playgroud)
以下哪一项会更有效率?为什么?
有很多的变数,当涉及到性能和查询优化,所以没有保证的答案,哪一个会是更好的性能,您在任何给定的时间数据,而无需测试,并观察他们的查询计划。
但总的来说,第二个示例使用LIMIT
andOFFSET
可能更有效,因为它只查询employee
表一次,而不是第一个示例中的三次。
归档时间: |
|
查看次数: |
161 次 |
最近记录: |