日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql 的 聚簇索引和二级索引

發布時間:2025/3/21 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql 的 聚簇索引和二级索引 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文地址:《聚簇索引和二級索引》,增加部分補充和理解。

目錄?????

1、索引的簡述

(1)聚簇索引

(2)非聚簇索引

二級索引(輔助索引)

2、示例

聚簇索引(主鍵索引)

二級索引(輔助索引)

3、結論

結論一

結論二


------------------------------------------------------------------------————————————————————————————————-

寫在前面,針對原博主的講述,網友提出相應補充,需要注意:

聚簇索引(Clustered indexes)是指索引和數據是在同一個結構里;非聚簇索引(Non-clustered indexes)反之。對于InnoDB和MyISAM引擎中的索引,都分為主鍵索引(primary key)和二級索引(secondary index);在InnoDb中,強制使用主鍵作為聚簇索引,B+ Tree葉子節點存儲就是主鍵數據,而二級索引的葉子節點存儲的是主鍵的鍵值在MyISAM中,主鍵索引與二級索引沒什么區別,都是存儲的數據行對應的地址。一般把InnoDB作為聚簇索引的代表、MyISAM作為非聚簇索引的代表,兩者進行比較,這就導致了矛盾點,如果將二級索引等價于非聚簇索引,那InnoDB就不能完全代表聚簇索引;但是單從二級索引的存儲形式來看,又屬于非聚簇索引。

1、索引的簡述

(1)聚簇索引和非聚簇索引

聚簇索引:

索引和數據存儲在一塊( 都存儲在同一個B*tree 中)。一般主鍵索引都是聚餐索引。

非聚簇索引:

索引數據和存儲數據是分離的。

(2)主鍵索引和二級索引

對于InnoDB和MyISAM引擎中的索引,都分為主鍵索引(primary key)和二級索引(secondary index); 在InnoDb中,強制使用主鍵作為聚簇索引,B+ Tree葉子節點存儲就是主鍵數據,而二級索引是非聚簇的,其葉子節點存儲的是主鍵的鍵值; 在MyISAM中,主鍵索引與二級索引沒什么區別,都是采用非聚簇,都是存儲的數據行對應的地址。

2、示例

下面我們通過一個具體的示例進行演示聚集索引和二級索引

pl_ranking(編程語言排行榜表)

該表包含3個字段,如下: id:主鍵 plname:編程語言名稱 ranking:排名

id: 設置主鍵 plname: 普通索引

聚簇索引(主鍵索引)

從圖中我們可以看到,索引數據和存儲數據都是在一顆樹上,存在一起的。通過定位索引就直接可以查找到數據。

這棵樹是根據主鍵進行創建的。
如果查找id=16的編程語言,
select id, plname, ranking from pl_ranking where id=16;
則只需要讀取3個磁盤塊,就可以獲取到數據。

二級索引(輔助索引)

從上圖中我們發現,該B*tree根據plname列進行構建的,只存儲索引數據,plname 和 id 的映射。

比如查找 編程語言為“Java”的數據。
select id, plname, ranking from pl_ranking where plname='Java';
首先通過二級索引樹中找到 Java 對應的主鍵id 為 “16”(讀取2個磁盤塊)。
然后在去主鍵索引中查找id為“16” 的數據。(讀取3個磁盤塊)

3、結論

select id, plname, ranking from pl_ranking where id=16; 根據主鍵查找只需要查找3個磁盤塊 select id, plname, ranking from pl_ranking where plname='Java'; 根據編程語言名稱查詢需要讀取5個磁盤塊

結論一

通過上面的主鍵索引和非主鍵索引的例子我們可以得出:
主鍵索引(聚餐索引)查詢效率比非主鍵索引查詢效率更高。如果能使用主鍵查找的,就盡量使用主鍵索引進行查找。

結論二

從上面圖中我們還可以分析得出以下結論:
主鍵定義的長度越小,二級索引的大小就越小,這樣每個磁盤塊存儲的索引數據越多,查詢效率就越高。

總結

以上是生活随笔為你收集整理的Mysql 的 聚簇索引和二级索引的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。