讓 MySQL 使用索引進行視圖查詢
查詢: 我如何鼓勵 MySQL 使用索引來檢視查詢?
答案:雖然在 MySQL 中使用視圖可能並不理想,但是當提供適當的索引結構時,MySQL 可以利用索引進行視圖查詢。
詳細說明:
MySQL 的視圖查詢是不同的來自其他資料庫,因為最佳化器不會將謂詞從外部查詢「推送」到視圖查詢。在這種情況下,外部查詢會在發生的_in上進行過濾,但MySQL在執行視圖查詢時不會套用此篩選器。
因此,視圖查詢被單獨處理,建立臨時表(派生表) 。當外部查詢執行時,它使用派生表作為行來源,然後評估發生的_in = 2006 謂詞。
為了提高效能,可以定義覆蓋索引:
該索引包括視圖查詢中引用的所有列,其中player作為前導列(相等謂詞),後跟發生的_in (GROUP BY)。包含分數使索引成為覆蓋索引,允許 MySQL 單獨從索引檢索所有必要的資料。
或者,考慮使用不使用派生表的獨立查詢,這在某些情況下可以提供更好的性能:
通過此修改和適當的覆蓋索引,MySQL應該能夠優化視圖查詢,透過利用可用索引顯著提高效能。
以上是如何讓MySQL使用索引進行視圖查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!