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

歡迎訪問 生活随笔!

生活随笔

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

数据库

MySQL聚簇索引:叶子保存主键或unique字段+data 非聚簇保存索引字段

發布時間:2024/9/19 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL聚簇索引:叶子保存主键或unique字段+data 非聚簇保存索引字段 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

非聚簇索引:索引與真實數據文件不在一個文件中

myisam的一個數據表table中,它是有table.frm、table.myd以及table.myi組成。

table.myd記錄了數據,table.myi記錄了索引的數據。

在用到索引時,先到table.myi(索引樹)中進行查找,取到數據所在table.myd的行位置,拿到數據。

所以myisam引擎的索引文件和數據文件是獨立分開的,則稱之為非聚簇索引。myisam類型的索引,指向數據在行的位置

聚簇索引:索引與數據是在一個文件中的

聚簇”的意思是數據行被按照一定順序一個個緊密地排列在一起存儲

InnoDB的數據文件只有數據結構文件.frm和數據文件.idb 其中.idb中存放的是數據和索引信息是存放在一起的

在innodb中,即存儲主鍵索引值,又存儲行數據,稱之為聚簇索引。

innodb中,沒有主鍵索引;

則會使用unique索引,沒有unique索引;

當這種列不存在的時候,會默認生成一個6字節整型的隱藏列作為主鍵;

一本英文課本為例,要找第8課,直接翻書,若先翻到第5課,則往后翻,再翻到第10課,則又往前翻。這本書本身就是一個索引,即“聚簇索引”。
如果要找"fire”這個單詞,會翻到書后面的附錄,這個附錄是按字母排序的,找到F字母那一塊,再找到"fire”,對應的會是它在第幾課。這個附錄,為“非聚簇索引”。
由此可見,聚簇索引,索引的順序就是數據存放的順序,所以,很容易理解,一張數據表只能有一個聚簇索引。

優缺點

聚簇索引將索引和數據行保存在同一個B-Tree中,查詢通過聚簇索引可以直接獲取數據,相比非聚簇索引需要第二次查詢(非覆蓋索引的情況下)效率要高。

聚簇索引對于范圍查詢的效率很高,因為其數據是按照大小排列的,

缺點

聚簇索引的更新代價比較高,如果更新了行的聚簇索引列,就需要將數據移動到相應的位置。這可能因為要插入的頁已滿而導致“頁分裂”。

插入速度嚴重依賴于插入順序,按照主鍵進行插入的速度是加載數據到Innodb中的最快方式。如果不是按照主鍵插入,最好在加載完成后使用OPTIMIZE TABLE命令重新組織一下表。

聚簇索引在插入新行和更新主鍵時,可能導致“頁分裂”問題。

聚簇索引可能導致全表掃描速度變慢,因為可能需要加載物理上相隔較遠的頁到內存中(需要耗時的磁盤尋道操作)。

圖示

總結

以上是生活随笔為你收集整理的MySQL聚簇索引:叶子保存主键或unique字段+data 非聚簇保存索引字段的全部內容,希望文章能夠幫你解決所遇到的問題。

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