1
我正在嘗試優化以下查詢。計數比較的查詢優化
EXPLAIN
select clb.f_name, clb.l_name, noofbooks
from (
select f_name, l_name, count(*) as noofbooks from
customer natural join loaned_book
group by f_name, l_name
) as clb
where 3 > (
select count(*) from (
select f_name, l_name, count(*) as noofbooks
from customer natural join loaned_book
group by f_name, l_name
) as clb1
where clb.noofbooks<clb1.noofbooks
)
order by noofbooks desc;
本質上這個查詢試圖找到no的「前三名」(包括關係,即不限於3)。由客戶借出的書籍。 該問題與查詢中必須進行的計數量有關。 是否可以使用第一個查詢中的計數值來減少第二個查詢中的選定行而不必重新計算所有行?
這是一項家庭作業任務,所以我不期待直接的答案。任何指針將不勝感激。
如果計數是「4 4 3 3 2 2 2 1」會怎麼樣? 「包括領帶的前三名」應該是「4 4 3 3」還是「4 4 3 3 2 2 2」?或者是其他東西? –
嗨馬克 - 「4 4 3 3 2 2 2」在那個例子中是正確的。 – jmc