我有一個(gè)項(xiàng)目,用于計(jì)算儀表板的 MySQL 表中特定條件的實(shí)例。一開(kāi)始很簡(jiǎn)單,但在幾次“你可以添加...”請(qǐng)求之后,我的程序中出現(xiàn)了多達(dá) 86 個(gè)不同的查詢。我預(yù)計(jì)未來(lái)會(huì)有更多“您可以添加...”請(qǐng)求嗎?為了提高效率,將數(shù)據(jù)批量查詢到 Java 然后在那里進(jìn)行排序/計(jì)數(shù),還是繼續(xù)進(jìn)行單獨(dú)查詢會(huì)更好/更快嗎?該表很小,現(xiàn)在 <300 行,而且我看不到它會(huì)超過(guò) 900 行(如果這很重要的話)。
1 回答

蝴蝶不菲
TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
所有查詢都是“SELECT count(*) where [條件 A] 和 [條件 B] 和 [條件 C]”的變體。它設(shè)置為每 5 分鐘運(yùn)行一次。
針對(duì)此類查詢的提示:表達(dá)式為 1 或 0 的 SUM() 與表達(dá)式為 true 的行的 COUNT() 相同。這是一個(gè)方便的 MySQL 特定技巧(其他 SQL 實(shí)現(xiàn)不會(huì)將 true/false 視為與 1/0 相同)。
SELECT
SUM(<condition A>) AS count_A,
SUM(<condition B>) AS count_B,
SUM(<condition C>) AS count_C,
...
FROM mytable
這使您可以運(yùn)行一個(gè)查詢來(lái)掃描表一次,同時(shí)“計(jì)算”具有不同條件的行。
一旦您了解了 SUM() 的技巧,它就非常簡(jiǎn)單,并且可以輕松向查詢添加更多列以獲取其他類型的計(jì)數(shù)。
添加回答
舉報(bào)
0/150
提交
取消