欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文解答什么是MySQL的回表

 更新時(shí)間:2022年08月03日 16:01:24   作者:m0_67403073  
這篇文章主要介紹了一文解答什么是MySQL的回表,回表就是?MySQL要先查詢到主鍵索引,然后再用主鍵索引定位到數(shù)據(jù),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,需要的朋友可以參考一下

引言

簡(jiǎn)單來(lái)說(shuō),回表就是 MySQL 要先查詢到主鍵索引,然后再用主鍵索引定位到數(shù)據(jù)。

下面,對(duì)一些問(wèn)題進(jìn)行分析與回答:

  • 什么是聚簇索引?什么是非聚簇索引?
  • 為什么回表要先查到主鍵索引?
  • 主鍵索引和非主鍵索引有什么區(qū)別?
  • 如何避免回表?

聚簇索引和非聚簇索引是什么?

MySQL 的索引有不同的角度的分類(lèi)方式,例如:按數(shù)據(jù)結(jié)構(gòu)分、按邏輯角度分、按物理存儲(chǔ)分。

其中,按物理存儲(chǔ)分有兩種索引:聚簇索引非聚簇索引

簡(jiǎn)單來(lái)說(shuō),聚簇索引是主鍵索引。

主鍵索引之外的就是非聚簇索引,非聚簇索引又叫輔助索引或者二級(jí)索引。

主鍵索引和非主鍵索引有什么區(qū)別?

相同點(diǎn):都使用的是 B+Tree 。

不同點(diǎn):葉子節(jié)點(diǎn)存儲(chǔ)的數(shù)據(jù)不同

  • 主鍵索引的葉子節(jié)點(diǎn)存儲(chǔ)的是一行完整的數(shù)據(jù);
  • 非主鍵索引的葉子節(jié)點(diǎn)存儲(chǔ)的是主鍵值。葉子節(jié)點(diǎn)不包含記錄的全部數(shù)據(jù),非主鍵的葉子節(jié)點(diǎn)除了用來(lái)排序的 key 還包含一個(gè)書(shū)簽(bookmark),其中存儲(chǔ)了聚簇索引的 key。

那么這兩種索引在使用方面上有什么區(qū)別呢?

使用主鍵索引查詢:

# 主鍵索引的的葉子節(jié)點(diǎn)存儲(chǔ)的是**一行完整的數(shù)據(jù)**,
# 所以只需搜索主鍵索引的 B+Tree 就可以輕松找到全部數(shù)據(jù)
select * from user where id = 1;

使用非主鍵索引查詢:

# 非主鍵索引的葉子節(jié)點(diǎn)存儲(chǔ)的是**主鍵值**,
# 所以MySQL會(huì)先查詢到 name 列的索引的 B+Tree,搜索得到對(duì)應(yīng)的主鍵值
# 然后再去搜索該主鍵值查詢主鍵索引的 B+Tree 才可以找到對(duì)應(yīng)的數(shù)據(jù)
select * from user where name = 'Jack';

可以看出使用非主鍵索引要比主鍵索引多使用一次 B+Tree。

B-Tree 和 B+Tree 的簡(jiǎn)單理解

理解聚簇索引和非聚簇索引的關(guān)鍵在于 B+Tree 的理解。

用一幅圖來(lái)表示,其它的就不再過(guò)多解釋了:

這里只是簡(jiǎn)單介紹一下 B-Tree 和 B+Tree 的區(qū)別:

  • B+樹(shù)中只有葉子節(jié)點(diǎn)會(huì)帶有指向記錄的指針,而B(niǎo)樹(shù)則所有節(jié)點(diǎn)都帶有,在內(nèi)部節(jié)點(diǎn)出現(xiàn)的索引項(xiàng)不會(huì)再出現(xiàn)在葉子節(jié)點(diǎn)中。
  • B+樹(shù)中所有葉子節(jié)點(diǎn)都是通過(guò)指針連接在一起,而B(niǎo)樹(shù)不會(huì)。

如何避免回表?

使用覆蓋索引,所謂覆蓋索引就是指索引中包含了查詢中的所有字段,這種情況下就不需要再進(jìn)行回表查詢了。

到此這篇關(guān)于一文解答什么是MySQL的回表的文章就介紹到這了,更多相關(guān)MySQL回表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL limit使用方法以及超大分頁(yè)問(wèn)題解決

    MySQL limit使用方法以及超大分頁(yè)問(wèn)題解決

    這篇文章主要給大家介紹了關(guān)于MySQL limit使用方法以及超大分頁(yè)問(wèn)題解決的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • MySQL下的RAND()優(yōu)化案例分析

    MySQL下的RAND()優(yōu)化案例分析

    這篇文章主要介紹了MySQL下的RAND()優(yōu)化案例,包括對(duì)JOIN查詢和子查詢的優(yōu)化,需要的朋友可以參考下
    2015-05-05
  • 如何用workbench導(dǎo)出mysql數(shù)據(jù)庫(kù)關(guān)系圖

    如何用workbench導(dǎo)出mysql數(shù)據(jù)庫(kù)關(guān)系圖

    用workbench導(dǎo)出mysql數(shù)據(jù)庫(kù)關(guān)系圖的解決方法,需要的朋友請(qǐng)往下閱讀
    2013-03-03
  • 解讀MySQL中一個(gè)B+樹(shù)能存儲(chǔ)多少數(shù)據(jù)

    解讀MySQL中一個(gè)B+樹(shù)能存儲(chǔ)多少數(shù)據(jù)

    這篇文章主要介紹了解讀MySQL中一個(gè)B+樹(shù)能存儲(chǔ)多少數(shù)據(jù)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Mysql索引詳細(xì)介紹

    Mysql索引詳細(xì)介紹

    這篇文章主要介紹了Mysql索引詳細(xì)介紹,本文講解了Mysql索引簡(jiǎn)介、設(shè)計(jì)索引的原則、如何使用索引等內(nèi)容,需要的朋友可以參考下
    2014-07-07
  • MySQL5.7 windows二進(jìn)制安裝教程

    MySQL5.7 windows二進(jìn)制安裝教程

    這篇文章主要為大家詳細(xì)介紹了MySQL5.7 windows二進(jìn)制安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 淺談mysql密碼遺忘和登陸報(bào)錯(cuò)的問(wèn)題

    淺談mysql密碼遺忘和登陸報(bào)錯(cuò)的問(wèn)題

    下面小編就為大家?guī)?lái)一篇淺談mysql密碼遺忘和登陸報(bào)錯(cuò)的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • Mysql批量插入數(shù)據(jù)時(shí)該如何解決重復(fù)問(wèn)題詳解

    Mysql批量插入數(shù)據(jù)時(shí)該如何解決重復(fù)問(wèn)題詳解

    之前寫(xiě)的代碼批量插入遇到了問(wèn)題,原因是有重復(fù)的數(shù)據(jù)(主鍵或唯一索引沖突),所以插入失敗,下面這篇文章主要給大家介紹了關(guān)于Mysql批量插入數(shù)據(jù)時(shí)該如何解決重復(fù)問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • linux下mysql5.7.19(tar.gz)安裝圖文教程

    linux下mysql5.7.19(tar.gz)安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了linux下mysql5.7.19tar.gz安裝圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • MySQL高可用MMM方案安裝部署分享

    MySQL高可用MMM方案安裝部署分享

    這篇文章主要介紹了MySQL高可用MMM方案安裝部署方法,需要的朋友可以參考下
    2014-02-02

最新評(píng)論