婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL中的回表和索引覆蓋示例詳解

MySQL中的回表和索引覆蓋示例詳解

熱門標簽:智能外呼系統復位 拉卡拉外呼系統 高清地圖標注道路 話務外呼系統怎么樣 大眾點評星級酒店地圖標注 400電話可以辦理嗎 臨清電話機器人 外東北地圖標注 云南電商智能外呼系統價格

索引類型

聚簇索引: 葉子節點存儲的是行記錄,每個表必須要有至少一個聚簇索引。使用聚簇索引查詢會很快,因為可以直接定位到行記錄
普通索引:二級索引,除聚簇索引外的索引,即非聚簇索引。普通索引葉子節點存儲的是主鍵(聚簇索引)的值。

聚簇索引遞推規則:

  • 如果表設置了主鍵,則主鍵就是聚簇索引
  • 如果表沒有主鍵,則會默認第一個NOT NULL,且唯一(UNIQUE)的列作為聚簇索引
  • 以上都沒有,則會默認創建一個隱藏的row_id作為聚簇索引

索引結構

id 是主鍵,所以是聚簇索引,其葉子節點存儲的是對應行記錄的數據

非聚簇索引(Non-ClusteredIndex)

聚簇索引查詢

如果查詢條件為主鍵(聚簇索引),則只需掃描一次B+樹即可通過聚簇索引定位到要查找的行記錄數據。

如:select * from user where id = 1;

非聚簇索引查詢

如果查詢條件為普通索引(非聚簇索引),需要掃描兩次B+樹,第一次掃描通過普通索引定位到聚簇索引的值,然后第二次掃描通過聚簇索引的值定位到要查找的行記錄數據。

如:select * from user where age = 30;

1. 先通過普通索引 age=30 定位到主鍵值 id=1
2. 再通過聚集索引 id=1 定位到行記錄數據

先通過普通索引的值定位聚簇索引值,再通過聚簇索引的值定位行記錄數據,需要掃描兩次索引B+樹,它的性能較掃一遍索引樹更低。

索引覆蓋

只需要在一棵索引樹上就能獲取SQL所需的所有列數據,無需回表,速度更快。

例如:select id,age from user where age = 10;

使用id,age,name查詢:

select id,age,name, salary from user where age = 10;
explain分析:age是普通索引,但name列不在索引樹上,所以通過age索引在查詢到id和age的值后,需要進行回表再查詢name的值。此時的Extra列的Using where表示進行了回表查詢

Type: all, 表示全表掃描

增加表的聯合索引:CREATE INDEX idx_user_name_age_salary ON mydb.user (name, age, salary);

explain分析:此時字段age和name是組合索引idx_age_name,查詢的字段id、age、name的值剛剛都在索引樹上,只需掃描一次組合索引B+樹即可,這就是實現了索引覆蓋,此時的Extra字段為Using index表示使用了索引覆蓋。

分頁查詢(非利用索引):

添加索引之后,即可實現利用索引快速查找。

總結

到此這篇關于MySQL中回表和索引覆蓋的文章就介紹到這了,更多相關MySQL回表和索引覆蓋內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • MySQL 的覆蓋索引與回表的使用方法
  • mysql利用覆蓋索引避免回表優化查詢
  • mysql回表致索引失效案例講解
  • mysql索引覆蓋實例分析

標簽:定西 無錫 揚州 福州 溫州 阿里 三明 山西

巨人網絡通訊聲明:本文標題《MySQL中的回表和索引覆蓋示例詳解》,本文關鍵詞  MySQL,中的,回表,和,索引,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL中的回表和索引覆蓋示例詳解》相關的同類信息!
  • 本頁收集關于MySQL中的回表和索引覆蓋示例詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 平泉县| 海南省| 临桂县| 娱乐| 台东县| 阜南县| 临朐县| 阜康市| 乐清市| 郁南县| 永寿县| 郸城县| 惠东县| 夏河县| 安福县| 洪江市| 定南县| 棋牌| 通江县| 渝北区| 屏东县| 容城县| 福建省| 若羌县| 时尚| 禹城市| 河池市| 禹州市| 陵川县| 襄垣县| 波密县| 扶余县| 中阳县| 乳山市| 黎城县| 平遥县| 饶平县| 监利县| 勐海县| 乌兰浩特市| 凤台县|