假設你有如下表:SQL - 查詢優化
TABLE Car
car_id
num
TABLE Car_description
dsc_id
car_id
model
TABLE Result
res_id
car_id
race_num
result
的任務是選擇最多,平均得分,我們有超過2臺車和Car.num,Car_description.model最佳汽車比賽。解決它的一種方法是編寫以下查詢。
select r.race_num,
MAX(score) as MaxScore,
AVG(score) as AvgScore,
MAX(case when seqnum = 1 then c.carnum end) as TopCarNum,
MAX(case when seqnum = 1 then cd.model end) as TopCarModel
from (select r.*,
ROW_NUMBER() over (partition by race_num order by score desc) as seqnum
from Result r
) r left outer join
Car c
on c.car_id = r.car_id left outer join
Car_Description cd
on c.car_id = d.car_id
group by r.race_num
having COUNT(*) > 2
但是,這裏我們在內部查詢中執行結果表的排序,而不是選擇最大元素,我認爲它會很耗時。是這樣嗎?我們如何優化這個?謝謝。
「我認爲這將是耗時」然後對其進行測試。 – deltree