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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

聚簇索引和二级索引

發(fā)布時(shí)間:2024/9/30 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 聚簇索引和二级索引 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

聚簇索引

索引和數(shù)據(jù)存儲(chǔ)在一塊( 都存儲(chǔ)在同一個(gè)B*tree 中)。
一般主鍵索引都是聚餐索引

Mysql中InnoDB引擎的主鍵索引為聚簇索引,MyISAM存儲(chǔ)引擎采用非聚集索引

非聚簇索引

索引數(shù)據(jù)和存儲(chǔ)數(shù)據(jù)是分離的。

二級(jí)索引(輔助索引)

二級(jí)索引存儲(chǔ)的是記錄的主鍵,而不是數(shù)據(jù)存儲(chǔ)的地址。

以Mysql的InnoDB為例
主鍵是聚集索引
唯一索引、普通索引、前綴索引等都是二級(jí)索引(輔助索引)

示例

下面我們通過(guò)一個(gè)具體的示例進(jìn)行演示聚集索引和二級(jí)索引

pl_ranking(編程語(yǔ)言排行榜表)

該表包含3個(gè)字段,如下:
id:主鍵
plname:編程語(yǔ)言名稱(chēng)
ranking:排名

idplnameranking
15C2
16Java1
18Php6
23C#5
26C++3
29Ada17
50Go12
52Lisp15

id: 設(shè)置主鍵
plname: 普通索引

聚簇索引(主鍵索引)


從圖中我們可以看到,索引數(shù)據(jù)和存儲(chǔ)數(shù)據(jù)都是在一顆樹(shù)上,存在一起的。通過(guò)定位索引就直接可以查找到數(shù)據(jù)。

這棵樹(shù)是根據(jù)主鍵進(jìn)行創(chuàng)建的。
如果查找id=16的編程語(yǔ)言,
select id, plname, ranking from pl_ranking where id=16;
則只需要讀取3個(gè)磁盤(pán)塊,就可以獲取到數(shù)據(jù)。

二級(jí)索引(輔助索引)

從上圖中我們發(fā)現(xiàn),該B*tree根據(jù)plname列進(jìn)行構(gòu)建的,只存儲(chǔ)索引數(shù)據(jù),plname 和 id 的映射。

比如查找 編程語(yǔ)言為“Java”的數(shù)據(jù)。
select id, plname, ranking from pl_ranking where plname=’Java’;
首先通過(guò)二級(jí)索引樹(shù)中找到 Java 對(duì)應(yīng)的主鍵id 為 “16”(讀取2個(gè)磁盤(pán)塊)。
然后在去主鍵索引中查找id為“16” 的數(shù)據(jù)。(讀取3個(gè)磁盤(pán)塊)

結(jié)論

select id, plname, ranking from pl_ranking where id=16;
根據(jù)主鍵查找只需要查找3個(gè)磁盤(pán)塊
select id, plname, ranking from pl_ranking where plname=’Java’;
根據(jù)編程語(yǔ)言名稱(chēng)查詢(xún)需要讀取5個(gè)磁盤(pán)塊

結(jié)論一

通過(guò)上面的主鍵索引和非主鍵索引的例子我們可以得出:
主鍵索引(聚餐索引)查詢(xún)效率比非主鍵索引查詢(xún)效率更高。如果能使用主鍵查找的,就盡量使用主鍵索引進(jìn)行查找。

結(jié)論二

從上面圖中我們還可以分析得出以下結(jié)論:
主鍵定義的長(zhǎng)度越小,二級(jí)索引的大小就越小,這樣每個(gè)磁盤(pán)塊存儲(chǔ)的索引數(shù)據(jù)越多,查詢(xún)效率就越高。


想了解更多精彩內(nèi)容請(qǐng)關(guān)注我的公眾號(hào)

本人簡(jiǎn)書(shū)blog地址:http://www.jianshu.com/u/1f0067e24ff8????
點(diǎn)擊這里快速進(jìn)入簡(jiǎn)書(shū)

GIT地址:http://git.oschina.net/brucekankan/
點(diǎn)擊這里快速進(jìn)入GIT

總結(jié)

以上是生活随笔為你收集整理的聚簇索引和二级索引的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。