與直接查詢相比,對特定狀態下的使用者進行計數的查詢顯示視圖的成本更高表掃描。 WHERE 子句在視圖中如何運作,如何解決這個效能問題?
視圖中 WHERE 子句的行為由所使用的視圖演算法決定。
通常,在視圖中,在視圖從基礎表中檢索所有行之後套用 WHERE 子句。演算法稱為temptable。然而,在這種情況下,沒有使用temptable演算法。相反,採用了 merge 演算法。
合併演算法在大多數情況下更有效,但當視圖包含聚合函數(如COUNT())或GROUP BY 子句時,不支援該演算法.要解決此問題,可以修改視圖定義,將COUNT(*) 替換為COUNT(DISTINCT state)。這將強制MySQL使用合併演算法,這可以顯著提高效能。以上是當 WHERE 子句影響計數查詢時如何最佳化視圖效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!