MySQL 視圖可以利用索引來查詢嗎?
MySQL 在檢視上利用索引查詢並不簡單。儘管底層表有索引,但視圖查詢是單獨處理的,可能會導致效率低下。
解決方案:覆蓋索引
最佳解決方案是建立「覆蓋索引」 」 在底層表上。此索引應包括視圖的定義查詢中所引用的列以及用於分組的任何列。 highscores 表的範例,覆蓋索引可以是:
有了這個索引,MySQL 就可以利用它進行視圖查詢:CREATE INDEX highscores_IX3 ON highscores (player, happened_in, score);
SELECT * FROM v_kobe_highscores WHERE happened_in = 2006;為什麼MyMy 中的視圖可能會出現問題
與其他一些資料庫不同,MySQL不會將謂詞從外部查詢「推送」到視圖查詢。
此過程可能會導致效能下降,特別是對於跨大型表定義的視圖。 在某些情況下,執行獨立查詢可能比使用視圖更有效。所需的數據,而無需建立和具體化視圖的開銷。以上是MySQL檢視能否利用索引進行高效率查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!