六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

MyISAM與InnoDB存儲(chǔ)引擎的索引完成方式的區(qū)別

[摘要]1. MyISAM索引實(shí)現(xiàn):1)主鍵索引:MyISAM引擎使用B+Tree作為索引結(jié)構(gòu),葉節(jié)點(diǎn)的data域存放的是數(shù)據(jù)記錄的地址。下圖是MyISAM主鍵索引的原理圖: ...

1. MyISAM索引實(shí)現(xiàn):

1)主鍵索引:

MyISAM引擎使用B+Tree作為索引結(jié)構(gòu),葉節(jié)點(diǎn)的data域存放的是數(shù)據(jù)記錄的地址。下圖是MyISAM主鍵索引的原理圖:


MyISAM和InnoDB存儲(chǔ)引擎的索引實(shí)現(xiàn)方式的區(qū)別

(圖myisam1)

這里設(shè)表一共有三列,假設(shè)我們以Col1為主鍵,圖myisam1是一個(gè)MyISAM表的主索引(Primary key)示意�?梢钥闯鯩yISAM的索引文件僅僅保存數(shù)據(jù)記錄的地址。

2)輔助索引(Secondary key)

在MyISAM中,主索引和輔助索引(Secondary key)在結(jié)構(gòu)上沒(méi)有任何區(qū)別,只是主索引要求key是唯一的,而輔助索引的key可以重復(fù)。如果我們?cè)贑ol2上建立一個(gè)輔助索引,則此索引的結(jié)構(gòu)如下圖所示:

MyISAM和InnoDB存儲(chǔ)引擎的索引實(shí)現(xiàn)方式的區(qū)別

同樣也是一顆B+Tree,data域保存數(shù)據(jù)記錄的地址。因此,MyISAM中索引檢索的算法為首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,則取出其data域的值,然后以data域的值為地址,讀取相應(yīng)數(shù)據(jù)記錄。

MyISAM的索引方式也叫做“非聚集”的,之所以這么稱呼是為了與InnoDB的聚集索引區(qū)分。

2. InnoDB索引實(shí)現(xiàn)

然InnoDB也使用B+Tree作為索引結(jié)構(gòu),但具體實(shí)現(xiàn)方式卻與MyISAM截然不同.

1)主鍵索引:

MyISAM索引文件和數(shù)據(jù)文件是分離的,索引文件僅保存數(shù)據(jù)記錄的地址。而在InnoDB中,表數(shù)據(jù)文件本身就是按B+Tree組織的一個(gè)索引結(jié)構(gòu),這棵樹(shù)的葉節(jié)點(diǎn)data域保存了完整的數(shù)據(jù)記錄。這個(gè)索引的key是數(shù)據(jù)表的主鍵,因此InnoDB表數(shù)據(jù)文件本身就是主索引。

MyISAM和InnoDB存儲(chǔ)引擎的索引實(shí)現(xiàn)方式的區(qū)別

(圖inndb主鍵索引)

(圖inndb主鍵索引)是InnoDB主索引(同時(shí)也是數(shù)據(jù)文件)的示意圖,可以看到葉節(jié)點(diǎn)包含了完整的數(shù)據(jù)記錄。這種索引叫做聚集索引。因?yàn)镮nnoDB的數(shù)據(jù)文件本身要按主鍵聚集,所以InnoDB要求表必須有主鍵(MyISAM可以沒(méi)有),如果沒(méi)有顯式指定,則MySQL系統(tǒng)會(huì)自動(dòng)選擇一個(gè)可以唯一標(biāo)識(shí)數(shù)據(jù)記錄的列作為主鍵,如果不存在這種列,則MySQL自動(dòng)為InnoDB表生成一個(gè)隱含字段作為主鍵,這個(gè)字段長(zhǎng)度為6個(gè)字節(jié),類型為長(zhǎng)整形。

2). InnoDB的輔助索引

InnoDB的所有輔助索引都引用主鍵作為data域。例如,下圖為定義在Col3上的一個(gè)輔助索引:

MyISAM和InnoDB存儲(chǔ)引擎的索引實(shí)現(xiàn)方式的區(qū)別

InnoDB 表是基于聚簇索引建立的。因此InnoDB 的索引能提供一種非�?焖俚闹麈I查找性能。不過(guò),它的輔助索引(Secondary Index, 也就是非主鍵索引)也會(huì)包含主鍵列,所以,如果主鍵定義的比較大,其他索引也將很大。如果想在表上定義 、很多索引,則爭(zhēng)取盡量把主鍵定義得小一些。InnoDB 不會(huì)壓縮索引。

文字符的ASCII碼作為比較準(zhǔn)則。聚集索引這種實(shí)現(xiàn)方式使得按主鍵的搜索十分高效,但是輔助索引搜索需要檢索兩遍索引:首先檢索輔助索引獲得主鍵,然后用主鍵到主索引中檢索獲得記錄。

不同存儲(chǔ)引擎的索引實(shí)現(xiàn)方式對(duì)于正確使用和優(yōu)化索引都非常有幫助,例如知道了InnoDB的索引實(shí)現(xiàn)后,就很容易明白為什么不建議使用過(guò)長(zhǎng)的字段作為主鍵,因?yàn)樗休o助索引都引用主索引,過(guò)長(zhǎng)的主索引會(huì)令輔助索引變得過(guò)大。再例如,用非單調(diào)的字段作為主鍵在InnoDB中不是個(gè)好主意,因?yàn)镮nnoDB數(shù)據(jù)文件本身是一顆B+Tree,非單調(diào)的主鍵會(huì)造成在插入新記錄時(shí)數(shù)據(jù)文件為了維持B+Tree的特性而頻繁的分裂調(diào)整,十分低效,而使用自增字段作為主鍵則是一個(gè)很好的選擇。

InnoDB索引MyISAM索引的區(qū)別:

一是主索引的區(qū)別,InnoDB的數(shù)據(jù)文件本身就是索引文件。而MyISAM的索引和數(shù)據(jù)是分開(kāi)的。

二是輔助索引的區(qū)別:InnoDB的輔助索引data域存儲(chǔ)相應(yīng)記錄主鍵的值而不是地址。而MyISAM的輔助索引和主索引沒(méi)有多大區(qū)別。

MySql索引算法原理解析(通俗易懂,只講B-tree)

MyISAM和InnoDB存儲(chǔ)引擎的索引實(shí)現(xiàn)方式的區(qū)別

以上就是MyISAM和InnoDB存儲(chǔ)引擎的索引實(shí)現(xiàn)方式的區(qū)別的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門(mén)到精通的SQL知識(shí)。




主站蜘蛛池模板: 日韩欧美精品 | 伊人伊人影院 | 欧美性开放视频 | 青青青在线网站视频在线 | 亚洲成a人片在线观看精品 亚洲成a人片在线观看导航 | 亚洲人成人77777在线播放 | 日韩中文字幕视频在线 | 亚洲精品天堂在线观看 | 视频二区中文字幕 | 色婷婷啪啪 | 性刺激免费视频观看在线观看 | 日本小视频在线 | 亚洲免费一 | 欧美亚洲人成网站在线观看刚交 | 日韩国产成人资源精品视频 | 三级韩国一区久久二区综合 | 日本剧情片大全免费的视频 | 色婷婷.com| 日韩欧国产精品一区综合无码 | 日本视频免费观看 | 在线另类 | 日本h在线 | 在线看日韩 | 四虎影视免费永久在线观看 | 日本美女高清在线观看免费 | 日皮毛片 | 日本高清无卡码一区二区久久 | 天天天天添天天拍天天谢 | 网络色综合久久 | 日本一区二区三区免费观看 | 亚州中文字幕 | 青青国产在线视频 | 在线v| 亚洲欧美人妖另类激情综合区 | 亚洲精品亚洲人成在线播放 | 亚洲一区免费观看 | 亚洲免费大片 | 五月欧美 | 婷婷在线网 | 青青青青青视频免费播放 | 亚欧在线精品免费观看一区 |