Mysql
使用子查詢是否比在 MySQL 中使用 Limit offset 和 order by 更有效?
例如,我們有一個問題是要找到表中薪水第二高的員工。這是我的桌子
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 次。