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

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

一文帶你分清MySQL回表查詢與索引覆蓋

瀏覽:2日期:2023-06-28 19:41:17
目錄1、兩類索引1.1 聚集索引(聚簇索引)1.2 非聚集索引(普通索引、非聚簇索引、二級索引)2、應用示例2.1 建表操作2.2 填充數據2.3 索引結構2.4 查找過程3、索引覆蓋3.1 如何實現覆蓋索引1、兩類索引

為了更好地闡釋這個問題,我們還是從索引來介紹吧。

InnoDB 索引分為兩大類,一類是聚集索引(Clustered Index),一類是非聚集索引(Secondary Index)

1.1 聚集索引(聚簇索引)

InnoDB聚集索引的葉子節點存儲行記錄,因此InnoDB必須要有且只有一個聚集索引。

如果表定義了PK(Primary Key,主鍵),那么PK就是聚集索引。

如果表沒有定義PK,則第一個NOT NULL UNIQUE的列就是聚集索引。

否則InnoDB會另外創建一個隱藏的ROWID作為聚集索引。

這種機制使得基于PK的查詢速度非???,因為直接定位的行記錄。

1.2 非聚集索引(普通索引、非聚簇索引、二級索引)

普通索引也叫二級索引,除聚簇索引外的索引,即非聚簇索引。

InnoDB的普通索引葉子節點存儲的是主鍵(聚簇索引)的值,而MyISAM的普通索引存儲的是記錄指針。

Q:為什么非主鍵索引結構葉子結點存儲的是主鍵值?

A:減少了出現行移動或者數據頁分裂時二級索引的維護工作(當數據需要更新的時候,二級索引不需要修改,只需要修改聚簇索引,一個表只能有一個聚簇索引,其他的都是二級索引,這樣只需要修改聚簇索引就可以了,不需要重新構建二級索引)

在使用非聚集索引時,為了取到具體數據,則需要通過PK回到聚集索引里去查詢數據。這就叫回表查詢,掃描了2次索引樹,所以效率相對較低。

2、應用示例

一例勝千言,show me you code!

2.1 建表操作mysql> create table user( -> id int(10) auto_increment, -> name varchar(30), -> sex tinyint(4), -> type varchar(8), -> primary key (id), -> index idx_name (name) -> )engine=innodb charset=utf8mb4;

id 字段是聚簇索引,name 字段是普通索引(二級索引)

2.2 填充數據mysql> select * from user;+----+--------+------+------+| id | name | sex | type |+----+--------+------+------+| 1 | sj | m | A || 3 | zs | m | A || 5 | ls | m | A || 9 | ww | f | B |+----+-----+-----+-----+2.3 索引結構聚簇索引(ClusteredIndex)

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

普通索引(secondaryIndex)

name 是普通索引(二級索引),非聚簇索引,其葉子節點存儲的是聚簇索引的的值

2.4 查找過程普通索引查找過程

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

select * from user where name = 'lisi';

普通索引因為無法直接定位行記錄,其查詢過程在通常情況下是需要掃描兩遍索引樹的。

實際執行過程:

路徑需要掃描兩遍索引樹,第一遍先通過普通索引定位到主鍵值id=5,然后第二遍再通過聚集索引定位到具體行記錄。

這就是所謂的回表查詢,即先定位主鍵值,再根據主鍵值定位行記錄,性能相對于只掃描一遍聚集索引樹的性能要低一些。

3、索引覆蓋

索引覆蓋是一種避免回表查詢的優化策略。

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

3.1 如何實現覆蓋索引

將要查詢的數據作為索引列建立普通索引(可以是單列索引,也可以一個索引語句定義所有要查詢的列,即聯合索引),這樣的話就可以直接返回索引中的的數據,不需要再通過聚集索引去定位行記錄,避免了回表的情況發生。

explain select id, name from user where name = 'lisi';

explain分析:因為name是普通索引,使用到了name索引,通過一次掃描B+樹即可查詢到相應的結果,這樣就實現了覆蓋索引

- END -

希望今天的講解對大家有所幫助,謝謝!

到此這篇關于一文帶你分清MySQL回表查詢與索引覆蓋的文章就介紹到這了,更多相關MySQL回表查詢與索引覆蓋內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MySQL 數據庫
主站蜘蛛池模板: ET3000双钳形接地电阻测试仪_ZSR10A直流_SXJS-IV智能_SX-9000全自动油介质损耗测试仪-上海康登 | ◆大型吹塑加工|吹塑加工|吹塑代加工|吹塑加工厂|吹塑设备|滚塑加工|滚塑代加工-莱力奇塑业有限公司 | 天津仓库出租网-天津电商仓库-天津云仓一件代发-【博程云仓】 | 地磅-电子地磅维修-电子吊秤-汽车衡-无人值守系统-公路治超-鹰牌衡器 | 航空连接器,航空插头,航空插座,航空接插件,航插_深圳鸿万科 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 万博士范文网-您身边的范文参考网站Vanbs.com | 防水套管|柔性防水套管|伸缩器|伸缩接头|传力接头-河南伟创管道 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 杭州可当科技有限公司—流量卡_随身WiFi_AI摄像头一站式解决方案 | 彭世修脚_修脚加盟_彭世修脚加盟_彭世足疗加盟_足疗加盟连锁_彭世修脚技术培训_彭世足疗 | 伸缩节_伸缩器_传力接头_伸缩接头_巩义市联通管道厂 | 云南成人高考_云南成考网| 伸缩器_伸缩接头_传力接头-巩义市润达管道设备制造有限公司 | 制冷采购电子商务平台——制冷大市场 | 烟台游艇培训,威海游艇培训-烟台市邮轮游艇行业协会 | 华东师范大学在职研究生招生网_在职研究生招生联展网 | 下水道疏通_管道疏通_马桶疏通_附近疏通电话- 立刻通 | 招商帮-一站式网络营销服务|互联网整合营销|网络推广代运营|信息流推广|招商帮企业招商好帮手|搜索营销推广|短视视频营销推广 | 【法利莱住人集装箱厂家】—活动集装箱房,集装箱租赁_大品牌,更放心 | 乳化沥青设备_改性沥青设备_沥青加温罐_德州市昊通路桥工程有限公司 | 重庆监控_电子围栏设备安装公司_门禁停车场管理系统-劲浪科技公司 | 小型UV打印机-UV平板打印机-大型uv打印机-UV打印机源头厂家 |松普集团 | 纸箱抗压机,拉力机,脂肪测定仪,定氮仪-山东德瑞克仪器有限公司 | 双杰天平-国产双杰电子天平-美国双杰-常熟双杰仪器 | 红立方品牌应急包/急救包加盟,小成本好项目代理_应急/消防/户外用品加盟_应急好项目加盟_新奇特项目招商 - 中红方宁(北京) 供应链有限公司 | 圆窗水平仪|伊莉莎冈特elesa+ganter | 化妆品加工厂-化妆品加工-化妆品代加工-面膜加工-广东欧泉生化科技有限公司 | 科威信洗净科技,碳氢清洗机,超声波清洗机,真空碳氢清洗机 | 杭州代理记账多少钱-注册公司代办-公司注销流程及费用-杭州福道财务管理咨询有限公司 | 列管冷凝器,刮板蒸发器,外盘管反应釜厂家-无锡曼旺化工设备有限公司 | 定制/定做衬衫厂家/公司-衬衫订做/订制价格/费用-北京圣达信 | 奥因-光触媒除甲醛公司-除甲醛加盟公司十大品牌 | 北京征地律师,征地拆迁律师,专业拆迁律师,北京拆迁律师,征地纠纷律师,征地诉讼律师,征地拆迁补偿,拆迁律师 - 北京凯诺律师事务所 | 金环宇|金环宇电线|金环宇电缆|金环宇电线电缆|深圳市金环宇电线电缆有限公司|金环宇电缆集团 | 膜结构_ETFE膜结构_膜结构厂家_膜结构设计-深圳市烨兴智能空间技术有限公司 | 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | 山东商品混凝土搅拌楼-环保型搅拌站-拌合站-分体仓-搅拌机厂家-天宇 | 双工位钻铣攻牙机-转换工作台钻攻中心-钻铣攻牙机一体机-浙江利硕自动化设备有限公司 | 网站建设-高端品牌网站设计制作一站式定制_杭州APP/微信小程序开发运营-鼎易科技 |