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

1、聚集索引
表數(shù)據(jù)按照索引的順序來存儲的,也就是說索引項的順序與表中記錄的物理順序一致。對于聚集索引,葉子結(jié)點即存儲了真實的數(shù)據(jù)行,不再有另外單獨的數(shù)據(jù)頁。
在一張表上最多只能創(chuàng)建一個聚集索引,因為真實數(shù)據(jù)的物理順序只能有一種。
從物理文件也可以看出 InnoDB(聚集索引)的數(shù)據(jù)文件只有數(shù)據(jù)結(jié)構(gòu)文件.frm和數(shù)據(jù)文件.idb 其中.idb中存放的是數(shù)據(jù)和索引信息 是存放在一起的。
2、非聚集索引
表數(shù)據(jù)存儲順序與索引順序無關(guān)。對于非聚集索引,葉結(jié)點包含索引字段值及指向數(shù)據(jù)頁數(shù)據(jù)行的邏輯指針,其行數(shù)量與數(shù)據(jù)表行數(shù)據(jù)量一致。
從物理文件中也可以看出 MyISAM(非聚集索引)的索引文件.MYI和數(shù)據(jù)文件.MYD是分開存儲的 是相對獨立的
總結(jié):
聚簇索引和非聚簇索引的區(qū)別是:
聚簇索引(innoDB)的葉子節(jié)點就是數(shù)據(jù)節(jié)點;
而非聚簇索引(myisam)的葉子節(jié)點仍然是索引文件 只是這個索引文件中包含指向?qū)?yīng)數(shù)據(jù)塊的指針
對于 非聚簇索引 來說,每次通過索引檢索到所需行號后,還需要通過葉子上的磁盤地址去磁盤內(nèi)取數(shù)據(jù)(回行)消耗時間。為了優(yōu)化這部分回行取數(shù)據(jù)時間,InnoDB 引擎采用了聚簇索引。
聚簇索引,即將數(shù)據(jù)存入索引葉子頁面上。對于 InnoDB 引擎來說,葉子頁面不再存該行對應(yīng)的地址,而是直接存儲數(shù)據(jù)。
這樣便避免了回行操作所帶來的時間消耗。 使得 InnoDB 在某些查詢上比 MyISAM 還要快!
ps. 關(guān)于查詢時間,一般認(rèn)為 MyISAM 犧牲了功能換取了性能,查詢更快。但事實并不一定如此。多數(shù)情況下,MyISAM 確實比 InnoDB 查的快 。但是查詢時間受多方面因素影響。InnoDB 查詢變慢得原因是因為支持事務(wù)、回滾等等,使得 InnoDB的葉子頁面實際上還包含有事務(wù)id(換句話說就是版本號) 以及回滾指針。
| 動作描述 | 使用聚集索引 | 使用非聚集索引 |
| 列經(jīng)常被分組排序 | 使用 | 使用 |
| 返回某范圍內(nèi)的數(shù)據(jù) | 使用 | 不使用 |
| 一個或極少不同值 | 不使用 | 不使用 |
| 小數(shù)目的不同值 | 使用 | 不使用 |
| 大數(shù)目的不同值 | 不使用 | 使用 |
| 頻繁更新的列 | 不使用 | 使用 |
| 外鍵列 | 使用 | 使用 |
| 主鍵列 | 使用 | 使用 |
| 頻繁修改索引列 | 不使用 | 使用 |
簡單來說,聚簇索引不適用于頻繁更新的列、頻繁修改的索引列和小數(shù)目的不同值。
關(guān)于MySQL中聚簇索引與非聚簇索引的區(qū)別問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道了解更多相關(guān)知識。
網(wǎng)站名稱:MySQL中聚簇索引與非聚簇索引的區(qū)別-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://chinadenli.net/article38/hpppp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、標(biāo)簽優(yōu)化、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站制作、電子商務(wù)、品牌網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容