覆蓋索引
阿新 • • 發佈:2018-01-30
nts 一個 mysql 減少 什麽是 fonts 執行 pan 決定 什麽是覆蓋索引
覆蓋索引(covering index)指一個查詢語句的執行只需要從輔助索引中就可以得到查詢記錄,而不需要查詢聚集索引中的記錄。也可以稱之為實現了索引覆蓋。
那麽,優點顯而易見。輔助索引不包含一整行的記錄,因此可以大大減少IO操作。覆蓋索引是mysql dba常用的一種SQL優化手段
參考:http://blog.csdn.net/garfielder007/article/details/54295577
聚集索引和輔助索引
- 聚集索引(主鍵索引)
- 輔助索引(二級索引)
什麽是覆蓋索引
覆蓋索引(covering index)指一個查詢語句的執行只需要從輔助索引中就可以得到查詢記錄,而不需要查詢聚集索引中的記錄。也可以稱之為實現了索引覆蓋。
那麽,優點顯而易見。輔助索引不包含一整行的記錄,因此可以大大減少IO操作。覆蓋索引是mysql dba常用的一種SQL優化手段
覆蓋索引的優點:
(1)索引條目通常遠小於數據行大小,如果只讀取索引,MySQL就會極大地減少數據訪問量。
(2)索引按照列值順序存儲,對於I/O密集的範圍查詢會比隨機從磁盤中讀取每一行數據的I/O要少很多。
(3)InnoDB的輔助索引(亦稱二級索引)在葉子節點中保存了行的主鍵值,如果二級索引能夠覆蓋查詢,則可不必對主鍵索引進行二次查詢了。
覆蓋索引就是從索引中直接獲取查詢結果,要使用覆蓋索引需要註意select查詢列中包含在索引列中;where條件包含索引列或者復合索引的前導列;查詢結果的字段長度盡可能少。
覆蓋索引