Kafka消費者 API(3)
阿新 • • 發佈:2022-05-21
聚集索引 VS 非聚集索引
在上節介紹 B+ 樹索引的時候,我們提到了圖中的索引其實是聚集索引的實現方式。
那什麼是聚集索引呢?在 MySQL 中,B+ 樹索引按照儲存方式的不同分為聚集索引和非聚集索引。
這裡我們著重介紹 InnoDB 中的聚集索引和非聚集索引:
①聚集索引(聚簇索引):以 InnoDB 作為儲存引擎的表,表中的資料都會有一個主鍵,即使你不建立主鍵,系統也會幫你建立一個隱式的主鍵。
這是因為 InnoDB 是把資料存放在 B+ 樹中的,而 B+ 樹的鍵值就是主鍵,在 B+ 樹的葉子節點中,儲存了表中所有的資料。
這種以主鍵作為 B+ 樹索引的鍵值而構建的 B+ 樹索引,我們稱之為聚集索引。
②非聚集索引(非聚簇索引):以主鍵以外的列值作為鍵值構建的 B+ 樹索引,我們稱之為非聚集索引。
非聚集索引與聚集索引的區別在於非聚集索引的葉子節點不儲存表中的資料,而是儲存該列對應的主鍵,想要查詢資料我們還需要根據主鍵再去聚集索引中進行查詢,這個再根據聚集索引查詢資料的過程,我們稱為回表。
明白了聚集索引和非聚集索引的定義,我們應該明白這樣一句話:資料即索引,索引即資料。
覆蓋索引:
直接返回不回表
KEY `idx-zid-shipment_date` (`zid`,`shipment_date`) USING BTREE,
索引下推: