亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一文解答什么是MySQL的回表

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

引言

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

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

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

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

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

其中,按物理存儲分有兩種索引:聚簇索引非聚簇索引。

簡單來說,聚簇索引是主鍵索引。

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

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

相同點:都使用的是 B+Tree 。

不同點:葉子節(jié)點存儲的數(shù)據(jù)不同

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

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

使用主鍵索引查詢:

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

使用非主鍵索引查詢:

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

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

B-Tree 和 B+Tree 的簡單理解

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

用一幅圖來表示,其它的就不再過多解釋了:

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

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

如何避免回表?

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

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

相關(guān)文章

  • 101個MySQL的配置和優(yōu)化的提示

    101個MySQL的配置和優(yōu)化的提示

    這里是101條調(diào)節(jié)和優(yōu)化 MySQL安裝的技巧。一些技巧是針對特定的安裝環(huán)境的,但這些思路是通用的。我已經(jīng)把他們分成幾類,來幫助你掌握更多MySQL的調(diào)節(jié)和優(yōu)化技巧
    2013-08-08
  • CentOS7.5 安裝MySql的教程

    CentOS7.5 安裝MySql的教程

    這篇文章主要介紹了CentOS7.5 安裝MySql的教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • mysql 8.0.13 安裝配置方法圖文教程

    mysql 8.0.13 安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.13 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 結(jié)合PHP腳本添加和查詢MySQL數(shù)據(jù)的基本教程

    結(jié)合PHP腳本添加和查詢MySQL數(shù)據(jù)的基本教程

    這篇文章主要介紹了結(jié)合PHP腳本添加和查詢MySQL數(shù)據(jù)的基本教程,即在PHP程序中使用基本的SELECT FROM和INSERT INTO語句,需要的朋友可以參考下
    2015-12-12
  • MySQL基礎(chǔ)快速入門知識總結(jié)(附思維導(dǎo)圖)

    MySQL基礎(chǔ)快速入門知識總結(jié)(附思維導(dǎo)圖)

    MySQL 為關(guān)系型數(shù)據(jù)庫(Relational Database Management System), 這種所謂的關(guān)系型可以理解為表格的概念, 一個關(guān)系型數(shù)據(jù)庫由一個或數(shù)個表格組成,這篇文章主要給大家介紹了關(guān)于MySQL基礎(chǔ)快速入門知識的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • My Sql 1067錯誤與編碼問題的解決方案

    My Sql 1067錯誤與編碼問題的解決方案

    My Sql 大部分都是用綠色版(解壓版) 然后注冊服務(wù)簡單方便,但是配置文件也很讓人糾結(jié),下面小編給大家?guī)砹薓y Sql 1067錯誤與編碼問題的解決方案,感興趣的朋友參考下吧
    2016-11-11
  • 高并發(fā)狀態(tài)下Replace Into造成的死鎖問題解決

    高并發(fā)狀態(tài)下Replace Into造成的死鎖問題解決

    本文主要介紹了高并發(fā)狀態(tài)下Replace Into造成的死鎖問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • SQL中from_unixtime函數(shù)的使用方法實例

    SQL中from_unixtime函數(shù)的使用方法實例

    在MySQL數(shù)據(jù)表設(shè)計中,時間字段一般都設(shè)計為時間戳格式的,開發(fā)人員去查看的時候就顯得有點不方便,可以使用FROM_UNIXTIME轉(zhuǎn)換成日期格式進(jìn)行查看,下面這篇文章主要給大家介紹了關(guān)于SQL中from_unixtime函數(shù)的使用方法的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • MySQL?原理優(yōu)化之Group?By的優(yōu)化技巧

    MySQL?原理優(yōu)化之Group?By的優(yōu)化技巧

    這篇文章主要介紹了MySQL?原理優(yōu)化之Group?By的優(yōu)化技巧,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • 阿里云centos7中安裝MySQL8.0.13的方法步驟

    阿里云centos7中安裝MySQL8.0.13的方法步驟

    這篇文章主要介紹了阿里云centos7中安裝MySQL8.0.13的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評論