MySQL之高效覆蓋索引

來源:互聯網
上載者:User

標籤:

mysql中的一種十分高效有用的索引---覆蓋索引。

覆蓋索引用通俗的話講就是在select的時候只用去讀取索引而取得資料,無需進行二次select相關表。這樣的索引的葉子節點上面也包含了他們索引的資料。

select * from table_name;

select id,name from table_name;

在多數情況下,我們只應該去查詢我們有必要知道的列,這樣一來網路之間傳送的資料包小了,減少了網路通訊,你查詢的速度自然會得到提升。

select a  from table_name where b ·····;這樣的一個查詢,都知道索引應該加在b上面,

查詢的處理過程:

首先去檢索b索引找到與其對應的索引,

然後根據索引區檢索正確的資料行。

這樣一來一去就是兩次檢索,能不能通過一次檢索而得到資料呢?

如果希望通過一次檢索得到資料,那麼索引上面就應該包含其索引相對的資料,這樣可能嗎?

讀到這,當然知道可能.

alter table_name add index (b,a);

添加一個這樣的索引就能實現了,

查看是否使用了覆蓋索引;

explain select ·····;

·······

·······

······

extra:use index

如果出現了紅色的字型部分,就表示使用了覆蓋索引。

INNODB引擎在覆蓋索引上面更進一步:

innodb引擎的所有儲存了主鍵ID,事務ID,復原指標,非主鍵ID,

他的查詢就會是非主鍵ID也可覆蓋來取得主鍵ID。


MySQL之高效覆蓋索引

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.