91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中聚簇索引與非聚簇索引的區別

發布時間:2020-10-30 16:22:18 來源:億速云 閱讀:647 作者:Leah 欄目:開發技術

MySQL中聚簇索引與非聚簇索引的區別?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

1、聚集索引

表數據按照索引的順序來存儲的,也就是說索引項的順序與表中記錄的物理順序一致。對于聚集索引,子結點即存儲了真實的數據行,不再有另外單獨的數據頁。

在一張表上最多只能創建一個聚集索引,因為真實數據的物理順序只能有一種。

從物理文件也可以看出 InnoDB(聚集索引)的數據文件只有數據結構文件.frm和數據文件.idb 其中.idb中存放的是數據和索引信息 是存放在一起的。

2、非聚集索引

表數據存儲順序與索引順序無關。對于非聚集索引,葉結點包含索引字段值及指向數據頁數據行的邏輯指針,其行數量與數據表行數據量一致。

從物理文件中也可以看出 MyISAM(非聚集索引)的索引文件.MYI和數據文件.MYD是分開存儲的 是相對獨立的

總結:

聚簇索引和非聚簇索引的區別是:

聚簇索引(innoDB)的葉子節點就是數據節點;

而非聚簇索引(myisam)的葉子節點仍然是索引文件 只是這個索引文件中包含指向對應數據塊的指針

對于 非聚簇索引 來說,每次通過索引檢索到所需行號后,還需要通過葉子上的磁盤地址去磁盤內取數據(回行)消耗時間。為了優化這部分回行取數據時間,InnoDB 引擎采用了聚簇索引。
聚簇索引,即將數據存入索引葉子頁面上。對于 InnoDB 引擎來說,葉子頁面不再存該行對應的地址,而是直接存儲數據。

這樣便避免了回行操作所帶來的時間消耗。 使得 InnoDB 在某些查詢上比 MyISAM 還要快!

ps. 關于查詢時間,一般認為 MyISAM 犧牲了功能換取了性能,查詢更快。但事實并不一定如此。多數情況下,MyISAM 確實比 InnoDB 查的快 。但是查詢時間受多方面因素影響。InnoDB 查詢變慢得原因是因為支持事務、回滾等等,使得 InnoDB的葉子頁面實際上還包含有事務id(換句話說就是版本號) 以及回滾指針。

動作描述使用聚集索引使用非聚集索引
列經常被分組排序使用使用
返回某范圍內的數據使用不使用
一個或極少不同值不使用不使用
小數目的不同值使用不使用
大數目的不同值不使用使用
頻繁更新的列不使用使用
外鍵列使用使用
主鍵列使用使用
頻繁修改索引列不使用使用

簡單來說,聚簇索引不適用于頻繁更新的列、頻繁修改的索引列和小數目的不同值。

關于MySQL中聚簇索引與非聚簇索引的區別問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

墨竹工卡县| 富源县| 奉新县| 瑞安市| 黎平县| 延长县| 新晃| 大理市| 得荣县| 咸丰县| 四平市| 木里| 搜索| 宁远县| 浪卡子县| 论坛| 正定县| 壶关县| 灌南县| 三明市| 汉寿县| 来安县| 彰武县| 新绛县| 策勒县| 澄江县| 安陆市| 盘山县| 永靖县| 九寨沟县| 枣阳市| 怀宁县| 乌拉特中旗| 山西省| 从江县| 保定市| 陆丰市| 三江| 邵阳县| 孟村| 嘉荫县|