2013-03-05 43 views
0

對於新聞門戶的主頁(由PHP和MySQL驅動),我需要從一個類別獲得9篇文章,從另一類別獲得9篇文章以及從任何類別獲得28篇最新文章。哪種做法最快?什麼是最快的查詢來獲得來自多個類別的有限(但不同)的文章數量?

我發現了一些解決方案,可以在單個查詢中從多個類別中獲取指定數量的文章,但它們都會爲每個類別返回相同數量的文章,這不適合我的問題。而且他們使用IF語句,我有一種感覺不會是最好的速度方式(?)

我應該只做3個查詢嗎?或者使用UNION ALL將其全部置於一個查詢中?

回答

0

我不認爲你可以實現你想要做的(非UNION或子查詢)查詢。

對於多個查詢與UNION或子選擇而言,取決於查詢的速度。多個小查詢可能會在查詢/獲取響應時產生重複開銷。就併發性而言,與其他查詢很好地結合起來,就競爭其他查詢而言,更小的查詢通常對數據庫更好。

0

當你做unionunion all一個查詢,它會快於三個單獨的查詢,因爲你節省通信開銷。

也考慮union而不是union all,因爲union all保留重複的行。