使用 MySQL 視圖是一種有害的做法嗎?
儘管有相反的建議,但在 MySQL 中使用視圖時確實可以利用索引增強功能。問題是如何實現這樣的功能。
答案:提供適當的索引
解決方案在於提供 MySQL 可以主動利用的索引。在這種情況下,“覆蓋”索引是最合適的,例如:
CREATE INDEX highscores_IX3 ON highscores (player, happened_in, score)
有了這個索引,MySQL 的優化器應該能夠將它用於SELECT 查詢,從而產生“使用索引” " 聲明歸因於WHERE player = 24 謂詞。
但是,必須承認MySQL 不太可能利用發生的_in 索引進行視圖查詢,因為它將內部“視圖查詢”執行與外部“視圖查詢”執行分開。查詢效能,“覆蓋索引”建議使用“索引”,其中包含查詢中引用的所有列(例如ON highscores (player、happens_in、score))。在基礎表中進行頁面查找,從而產生「使用索引」存取方法。視圖查詢等效的獨立查詢:
此查詢的覆蓋索引(例如,ON highscores (player, gone_in, Score))也可以使用,從而消除對中間「派生」表的需要。
警告和注意事項
雖然視圖本質上並不是有害的,但了解如何使用視圖至關重要MySQL處理視圖查詢,這與其他資料庫採用的方法不同。
以上是MySQL 視圖可以利用索引增強來提高效能嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!