主頁(yè) > 知識(shí)庫(kù) > 詳解MySQL 聚簇索引與非聚簇索引

詳解MySQL 聚簇索引與非聚簇索引

熱門(mén)標(biāo)簽:百度地圖圖標(biāo)標(biāo)注中心 石家莊電商外呼系統(tǒng) 信陽(yáng)穩(wěn)定外呼系統(tǒng)運(yùn)營(yíng)商 湖南人工外呼系統(tǒng)多少錢 日照旅游地圖標(biāo)注 廣東人工電話機(jī)器人 芒果電話機(jī)器人自動(dòng)化 南通自動(dòng)外呼系統(tǒng)軟件 申請(qǐng)外呼電話線路

1、聚集索引

表數(shù)據(jù)按照索引的順序來(lái)存儲(chǔ)的,也就是說(shuō)索引項(xiàng)的順序與表中記錄的物理順序一致。對(duì)于聚集索引,子結(jié)點(diǎn)即存儲(chǔ)了真實(shí)的數(shù)據(jù)行,不再有另外單獨(dú)的數(shù)據(jù)頁(yè)。

在一張表上最多只能創(chuàng)建一個(gè)聚集索引,因?yàn)檎鎸?shí)數(shù)據(jù)的物理順序只能有一種。

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

2、非聚集索引

表數(shù)據(jù)存儲(chǔ)順序與索引順序無(wú)關(guān)。對(duì)于非聚集索引,葉結(jié)點(diǎn)包含索引字段值及指向數(shù)據(jù)頁(yè)數(shù)據(jù)行的邏輯指針,其行數(shù)量與數(shù)據(jù)表行數(shù)據(jù)量一致。

從物理文件中也可以看出 MyISAM(非聚集索引)的索引文件.MYI和數(shù)據(jù)文件.MYD是分開(kāi)存儲(chǔ)的 是相對(duì)獨(dú)立的

總結(jié):

聚簇索引和非聚簇索引的區(qū)別是:

聚簇索引(innoDB)的葉子節(jié)點(diǎn)就是數(shù)據(jù)節(jié)點(diǎn);

而非聚簇索引(myisam)的葉子節(jié)點(diǎn)仍然是索引文件 只是這個(gè)索引文件中包含指向?qū)?yīng)數(shù)據(jù)塊的指針

對(duì)于 非聚簇索引 來(lái)說(shuō),每次通過(guò)索引檢索到所需行號(hào)后,還需要通過(guò)葉子上的磁盤(pán)地址去磁盤(pán)內(nèi)取數(shù)據(jù)(回行)消耗時(shí)間。為了優(yōu)化這部分回行取數(shù)據(jù)時(shí)間,InnoDB 引擎采用了聚簇索引。
聚簇索引,即將數(shù)據(jù)存入索引葉子頁(yè)面上。對(duì)于 InnoDB 引擎來(lái)說(shuō),葉子頁(yè)面不再存該行對(duì)應(yīng)的地址,而是直接存儲(chǔ)數(shù)據(jù)。

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

ps. 關(guān)于查詢時(shí)間,一般認(rèn)為 MyISAM 犧牲了功能換取了性能,查詢更快。但事實(shí)并不一定如此。多數(shù)情況下,MyISAM 確實(shí)比 InnoDB 查的快 。但是查詢時(shí)間受多方面因素影響。InnoDB 查詢變慢得原因是因?yàn)橹С质聞?wù)、回滾等等,使得 InnoDB的葉子頁(yè)面實(shí)際上還包含有事務(wù)id(換句話說(shuō)就是版本號(hào)) 以及回滾指針。

動(dòng)作描述 使用聚集索引 使用非聚集索引
列經(jīng)常被分組排序 使用 使用
返回某范圍內(nèi)的數(shù)據(jù) 使用 不使用
一個(gè)或極少不同值 不使用 不使用
小數(shù)目的不同值 使用 不使用
大數(shù)目的不同值 不使用 使用
頻繁更新的列 不使用 使用
外鍵列 使用 使用
主鍵列 使用 使用
頻繁修改索引列 不使用 使用

簡(jiǎn)單來(lái)說(shuō),聚簇索引不適用于頻繁更新的列、頻繁修改的索引列和小數(shù)目的不同值。

以上就是詳解MySQL 聚簇索引與非聚簇索引的詳細(xì)內(nèi)容,更多關(guān)于MySQL 聚簇索引與非聚簇索引的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • MySQL學(xué)習(xí)教程之聚簇索引
  • mysql聚簇索引的頁(yè)分裂原理實(shí)例分析
  • 一看就懂的MySQL的聚簇索引及聚簇索引是如何長(zhǎng)高的

標(biāo)簽:惠州 沈陽(yáng) 合肥 天津 呼和浩特 公主嶺 牡丹江 阿里

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解MySQL 聚簇索引與非聚簇索引》,本文關(guān)鍵詞  詳解,MySQL,聚簇,索引,與,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解MySQL 聚簇索引與非聚簇索引》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于詳解MySQL 聚簇索引與非聚簇索引的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章