电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

MySQL索引查詢的具體使用

瀏覽:196日期:2023-05-08 10:17:44
目錄
  • 索引的分類
    • 聚簇索引
    • 非聚簇索引
  • 實戰理解

    我們都知道MySQL的輔助索引可以提升檢索效率,但是為什么有的時候,走輔助索引反而不如走主鍵索引的效率高呢?這里我覺得需要先弄懂輔助索引的底層原理以及回表查詢的概念。

    ps:下邊我們討論的場景主要是針對innodb存儲引擎為前提。

    索引的分類

    在我們給MySQL表建立索引的時候,一共有兩種,分別是聚簇索引,非聚簇索引。

    聚簇索引

    聚簇索引會將索引和對應的行記錄數據內容都統一存放在同一個葉子節點中。例如下圖所示:

    從上圖中我們可以看到,最上頭是非葉子結點,這種非葉子結點里面存儲的是主鍵id的值,而非葉子結點的內部會有個數據頁的指針,這些指針會指向下層的B+樹節點,一般B+樹的最底層我們稱之為葉子結點。在聚簇索引的葉子結點里面,會存儲主鍵id和對應的行記錄內容。

    非聚簇索引

    非聚簇索引的結構如下所示:

    可以看到,在非聚簇索引中,所有的葉子結點都包含了輔助索引的值和主鍵的值。而當我們要根據輔助索引查詢的時候,最終就會通過使用輔助索引定位到具體的葉子結點,最后根據葉子節點里面的主鍵id去聚簇索引的b+樹中檢索具體的行記錄。

    下邊我們通過一組代碼案例來深入了解下回表的知識點。

    實戰理解

    首先需要創建一張表用于做測試:

    CREATE TABLE `t_common` (  `a` int unsigned NOT NULL AUTO_INCREMENT,  `b` int DEFAULT NULL,  `c` int DEFAULT NULL,  `d` int DEFAULT NULL,  PRIMARY KEY (`a`),  KEY `ud_b_c` (`b`,`c`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3;

    然后我們插入一些測試數據:

    INSERT INTO `t_common` (`a`, `b`, `c`, `d`)VALUES	(1, 1, 1, 1),	(2, 2, 2, 2);

    接著我們來看看下邊的幾個sql案例:

    1.全表掃描

    select a,b,c,d from t_common;

    explain結果如下:

    可以看到這條sql需要從mysql中檢索出a,b,c,d四個字段,走的是全表掃描,并沒有走索引。

    2.按照c關鍵字查詢

    select a,b,c,d from t_common where c=1;

    explain結果如下:

    可以看到,這里也是走了全表掃描。

    3.按照b關鍵字查詢

    select a,b,c,d from t_common where c=1;

    explain結果如下:

    可以看到,結果是走了b,c聯合索引。這里的結果也應證了最左匹配原則的說法。但是這里因為查詢出來的d字段不在bc索引樹上,因此需要回表。

    4.按照c關鍵字查詢,只返回b,c字段

    select b,c from t_common where c=1;

    explain結果如下:

    這種情況有點特殊,按理說他是不滿足最左匹配原則的,但是由于檢索的內容正好是輔助索引的字段,同時掃描輔助索引的IO開銷要比掃描主鍵索引的IO開銷小,所以這里的查詢對輔助索引樹進行了全表掃描。

    (開銷更小的原因是:因為主鍵索引存儲的是行記錄,加載的數據更多。走普通索引的時候,葉子節點存儲的是主鍵id值,這樣一次加載的數據會更多,走普通索引效率比主鍵索引要高。)

    5.按照c關鍵字查詢,返回a,b,c字段

    select a,b,c from t_common where c=1;

    explain結果如下:

    這種情況和上邊的情況相同,由于c的查詢不滿足最左匹配原則,原先是不不應該走b,c索引的,但是后期優化器發現,需要查詢的字段正好是輔助索引的字段內容,而掃描輔助索引的IO開銷要比掃描主鍵索引的IO開銷小,所以這里的查詢對輔助索引樹進行了全表掃描。

    (開銷更小的原因是:因為主鍵索引存儲的是行記錄,加載的數據更多。走普通索引的時候,葉子節點存儲的是主鍵id值,這樣一次加載的數據會更多,走普通索引效率比主鍵索引要高。)

    6.按照b關鍵字進行查詢,查詢a,b,c,是否有回表

    select a,b,c from t_common where b=1;

    explain結果如下:

    這種情況下,要注意,由于我們的bc索引的葉子結點包含了主鍵的值,所以其實減少了回表查詢的情況。但是如果我們看回上邊所說的第三種情況,第三種查詢其實還需要通過一次回表的操作,去查詢d的值。

    7.如果查詢的字段包含了主鍵索引和輔助索引,優先走輔助索引

    select a,b,c from t_common;

    explain結果:

    因為主鍵索引存儲的是行記錄,加載的數據更多。走普通索引的時候,葉子節點存儲的是主鍵id值,這樣一次加載的數據會更多,走普通索引效率比主鍵索引要高。所以這條sql直接掃描了整個b,c聯合索引樹。

    到此這篇關于MySQL索引查詢的具體使用的文章就介紹到這了,更多相關MySQL索引查詢內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

    標簽: MySQL
    相關文章:
    主站蜘蛛池模板: 起好名字_取个好名字_好名网免费取好名在线打分| 微学堂-电动能源汽车评测_电动车性能分享网 | BOE画框屏-触摸一体机-触控查询一体机-触摸屏一体机价格-厂家直销-触发电子 | 布袋除尘器-单机除尘器-脉冲除尘器-泊头市兴天环保设备有限公司 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 净化工程_无尘车间_无尘车间装修-广州科凌净化工程有限公司 | 磁力轮,磁力联轴器,磁齿轮,钕铁硼磁铁-北京磁运达厂家 | 全国冰箱|空调|洗衣机|热水器|燃气灶维修服务平台-百修家电 | 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 万师讲师网-优质讲师培训师供应商,讲师认证,找讲师来万师 | 防堵吹扫装置-防堵风压测量装置-电动操作显示器-兴洲仪器 | 耐压仪-高压耐压仪|徐吉电气 | 科研ELISA试剂盒,酶联免疫检测试剂盒,昆虫_植物ELISA酶免试剂盒-上海仁捷生物科技有限公司 | 私人别墅家庭影院系统_家庭影院音响_家庭影院装修设计公司-邦牛影音 | 施工电梯_齿条货梯_烟囱电梯_物料提升机-河南大诚机械制造有限公司 | 挤奶设备过滤纸,牛奶过滤纸,挤奶机过滤袋-济南蓝贝尔工贸有限公司 | 长沙一级消防工程公司_智能化弱电_机电安装_亮化工程专业施工承包_湖南公共安全工程有限公司 | 西宁装修_西宁装修公司-西宁业之峰装饰-青海业之峰墅级装饰设计公司【官网】 | 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 膏剂灌装旋盖机-眼药水灌装生产线-西林瓶粉剂分装机-南通博琅机械科技 | led全彩屏-室内|学校|展厅|p3|户外|会议室|圆柱|p2.5LED显示屏-LED显示屏价格-LED互动地砖屏_蕙宇屏科技 | 领先的大模型技术与应用公司-中关村科金 | 二手光谱仪维修-德国OBLF光谱仪|进口斯派克光谱仪-热电ARL光谱仪-意大利GNR光谱仪-永晖检测 | 广东泵阀展|阀门展-广东国际泵管阀展览会| LOGO设计_品牌设计_VI设计 - 特创易 | 玖容气动液压设备有限公司-气液增压缸_压力机_增压机_铆接机_增压器 | 小程序开发公司-小程序制作-微信小程序开发-小程序定制-咏熠软件 | 聚氨酯保温钢管_聚氨酯直埋保温管道_聚氨酯发泡保温管厂家-沧州万荣防腐保温管道有限公司 | 全自动包装秤_全自动上袋机_全自动套袋机_高位码垛机_全自动包装码垛系统生产线-三维汉界机器(山东)股份有限公司 | 科研ELISA试剂盒,酶联免疫检测试剂盒,昆虫_植物ELISA酶免试剂盒-上海仁捷生物科技有限公司 | 螺杆泵_中成泵业| 上海新光明泵业制造有限公司-电动隔膜泵,气动隔膜泵,卧式|立式离心泵厂家 | 桂林腻子粉_内墙外墙抗裂砂浆腻子粉推荐广西鑫达涂料厂家供应 | 石英陶瓷,石英坩埚,二氧化硅陶瓷-淄博百特高新材料有限公司 | 蔬菜清洗机_环速洗菜机_异物去除清洗机_蔬菜清洗机_商用洗菜机 - 环速科技有限公司 | 软膜天花_软膜灯箱_首选乐创品牌_一站式天花软膜材料供应商! | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 橡胶接头|可曲挠橡胶接头|橡胶软接头安装使用教程-上海松夏官方网站 | 专业生产动态配料系统_饲料配料系统_化肥配料系统等配料系统-郑州鑫晟重工机械有限公司 | 智能交通网_智能交通系统_ITS_交通监控_卫星导航_智能交通行业 | 啤酒设备-小型啤酒设备-啤酒厂设备-济南中酿机械设备有限公司 | LED太阳能中国结|发光红灯笼|灯杆造型灯|节日灯|太阳能灯笼|LED路灯杆装饰造型灯-北京中海轩光电 |