91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL回表指的是什么

發布時間:2022-08-03 17:59:24 來源:億速云 閱讀:137 作者:iii 欄目:開發技術

本篇內容主要講解“MySQL回表指的是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“MySQL回表指的是什么”吧!

引言

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

下面,對一些問題進行分析與回答:

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

  • 為什么回表要先查到主鍵索引?

  • 主鍵索引和非主鍵索引有什么區別?

  • 如何避免回表?

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

MySQL 的索引有不同的角度的分類方式,例如:按數據結構分、按邏輯角度分、按物理存儲分。

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

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

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

主鍵索引和非主鍵索引有什么區別?

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

不同點:葉子節點存儲的數據不同

  • 主鍵索引的葉子節點存儲的是一行完整的數據

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

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

使用主鍵索引查詢:

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

使用非主鍵索引查詢:

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

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

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

理解聚簇索引和非聚簇索引的關鍵在于 B+Tree 的理解。

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

MySQL回表指的是什么

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

  • B+樹中只有葉子節點會帶有指向記錄的指針,而B樹則所有節點都帶有,在內部節點出現的索引項不會再出現在葉子節點中。

  • B+樹中所有葉子節點都是通過指針連接在一起,而B樹不會。

如何避免回表?

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

到此,相信大家對“MySQL回表指的是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

河源市| 柳林县| 乌拉特后旗| 泸西县| 托克逊县| 齐齐哈尔市| 海淀区| 维西| 炎陵县| 淅川县| 铜陵市| 五家渠市| 贞丰县| 武川县| 榆中县| 三原县| 绥棱县| 师宗县| 赤峰市| 郸城县| 汉中市| 基隆市| 乌拉特前旗| 保靖县| 类乌齐县| 海兴县| 平陆县| 佛冈县| 贵南县| 丽江市| 贵州省| 凤山县| 郧西县| 岳阳县| 友谊县| 巴林右旗| 丰原市| 江达县| 丽水市| 香港| 博兴县|