如何使此SQL查詢更高效?使SQL查詢更高效
SELECT
(SELECT COUNT(*) FROM table WHERE price < 10) AS priceUnder10,
(SELECT COUNT(*) FROM table WHERE price BETWEEN 10 AND 20) AS price10to20,
(SELECT COUNT(*) FROM table WHERE price > 20) AS priceOver20,
(SELECT COUNT(*) FROM table WHERE colour = 'Red') AS colourRed,
(SELECT COUNT(*) FROM table WHERE colour = 'Green') AS colourGreen,
(SELECT COUNT(*) FROM table WHERE colour = 'Blue') AS colourBlue;
我已經對price
和colour
列的索引,所以我要尋找一個更好的方式來彙總數據。
我已經看過使用GROUP BY
,HAVING
,自連接和窗口函數,但不能解決如何達到相同的結果。
任何建議非常感謝。
感謝,偉大的答案,但爲什麼是'WHERE'必要嗎? – gjb
@gjb - 這可能不是,但想象你有一個1,000,000行表,只有1行在''Red','Green','Blue'中有非空價格或顏色。其他999,999行將不會不同的結果,但仍然沒有它被掃描。當然,你可能知道你的數據沒有這個分佈('價格'可能不可以爲空),它也可能被刪除! –