首頁  >  文章  >  資料庫  >  為什麼視圖的成本比在基礎表上執行相同查詢的成本高得多?

為什麼視圖的成本比在基礎表上執行相同查詢的成本高得多?

Patricia Arquette
Patricia Arquette原創
2024-10-24 00:26:29599瀏覽

Why Does a View Show Significantly Higher Cost Than Executing Same Query on an Underlying Table?

MySQL 查看效能問題

問題:

用戶對錶有100,000 行查詢有100,000 行,根據特定狀態進行過濾時顯示出較高的成本(5200)。使用相同的聚合查詢建立視圖並在視圖上進行篩選會導致顯著更高的成本(100,000)。

說明:

成本差異是由於使用的視圖演算法。視圖的預設演算法是 temptable,它從基礎表中檢索所有行,然後套用過濾器。當基於一小部分行進行過濾時,這可能會導致效能不佳。

解決方案:

要解決此問題,應使用以下方式定義視圖merge演算法,允許使用底層表的索引,提高過濾視圖

merge演算法,允許使用底層表的索引,提高過濾視圖效率。這可以使用以下語法來完成:

透過合併演算法,視圖上的查詢現在可以利用狀態列上的索引,從而降低其成本並提高效能。

以上是為什麼視圖的成本比在基礎表上執行相同查詢的成本高得多?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn