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

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

帶你學習MySQL執行計劃

瀏覽:139日期:2023-10-02 13:29:11
目錄1.執行計劃簡介2.執行計劃實戰id:select_type:table:type:possible_keys:key:key_len:rows:Extra:1.執行計劃簡介

執行計劃是指一條 SQL 語句在經過 MySQL 查詢優化器的優化會后,具體的執行方式。MySQL 為我們提供了 EXPLAIN 語句,來獲取執行計劃的相關信息。需要注意的是,EXPLAIN 語句并不會真的去執行相關的語句,而是通過查詢優化器對語句進行分析,找出最優的查詢方案,并顯示對應的信息。

執行計劃通常用于 SQL 性能分析、優化等場景。通過 explain 的結果,可以了解到如數據表的查詢順序、數據查詢操作的操作類型、哪些索引可以被命中、哪些索引實際會命中、每個數據表有多少行記錄被查詢等信息。

explain 執行計劃支持 SELECT、DELETE、INSERT、REPLACE 以及 UPDATE 語句。我們一般多用于分析 select 查詢語句。

2.執行計劃實戰

我們簡單來看下一條查詢語句的執行計劃:

mysql> explain SELECT * FROM dept_emp WHERE emp_no IN (SELECT emp_no FROM dept_emp GROUP BY emp_no HAVING COUNT(emp_no)>1);+----+-------------+----------+------------+-------+-----------------+---------+---------+------+--------+----------+-------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+----------+------------+-------+-----------------+---------+---------+------+--------+----------+-------------+| 1 | PRIMARY | dept_emp | NULL | ALL | NULL | NULL | NULL | NULL | 331143 | 100.00 | Using where || 2 | SUBQUERY | dept_emp | NULL | index | PRIMARY,dept_no | PRIMARY | 16 | NULL | 331143 | 100.00 | Using index |+----+-------------+----------+------------+-------+-----------------+---------+---------+------+--------+----------+-------------+

可以看到,執行計劃結果中共有 12 列,各列代表的含義總結如下表:

列名

含義

id

SELECT查詢的序列標識符

select_type

SELECT關鍵字對應的查詢類型

table

用到的表名

partitions

匹配的分區,對于未分區的表,值為 NULL

type

表的訪問方法

possible_keys

可能用到的索引

key

實際用到的索引

key_len

所選索引的長度

ref

當使用索引等值查詢時,與索引作比較的列或常量

rows

預計要讀取的行數

filtered

按表條件過濾后,留存的記錄數的百分比

Extra

附加信息

下面我們來看下執行計劃中部分重要列詳解:

id:

SELECT 標識符。這是查詢中 SELECT 的序號。如果該行引用其他行的并集結果,則值可以為 NULL 。當 id 相同時,執行順序 由上向下;當 id 不同時,id 值越大,優先級越高,越先執行。

select_type:

查詢的類型,常見的值有:

SIMPLE:簡單查詢,不包含 UNION 或者子查詢。 PRIMARY:查詢中如果包含子查詢或其他部分,外層的 SELECT 將被標記為 PRIMARY。 SUBQUERY:子查詢中的第一個 SELECT。 UNION:在 UNION 語句中,UNION 之后出現的 SELECT。 DERIVED:在 FROM 中出現的子查詢將被標記為 DERIVED。 UNION RESULT:UNION 查詢的結果。table:

表示查詢用到的表名,每行都有對應的表名,表名除了正常的表之外,也可能是以下列出的值:

<unionM,N>: 本行引用了 id 為 M 和 N 的行的 UNION 結果; <derivedN>: 本行引用了 id 為 N 的表所產生的的派生表結果。派生表有可能產生自 FROM 語句中的子查詢。 <subqueryN>: 本行引用了 id 為 N 的表所產生的的物化子查詢結果。type:

查詢執行的類型,描述了查詢是如何執行的。所有值的順序從最優到最差排序為:

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

常見的幾種類型具體含義如下:

system:如果表使用的引擎對于表行數統計是精確的(如:MyISAM),且表中只有一行記錄的情況下,訪問方法是 system ,是 const 的一種特例。 const:表中最多只有一行匹配的記錄,一次查詢就可以找到,常用于使用主鍵或唯一索引的所有字段作為查詢條件。 eq_ref:當連表查詢時,前一張表的行在當前這張表中只有一行與之對應。是除了 system 與 const 之外最好的 join 方式,常用于使用主鍵或唯一索引的所有字段作為連表條件。 ref:使用普通索引作為查詢條件,查詢結果可能找到多個符合條件的行。 index_merge:當查詢條件使用了多個索引時,表示開啟了 Index Merge 優化,此時執行計劃中的 key 列列出了使用到的索引。 range:對索引列進行范圍查詢,執行計劃中的 key 列表示哪個索引被使用了。 index:查詢遍歷了整棵索引樹,與 ALL 類似,只不過掃描的是索引,而索引一般在內存中,速度更快。 ALL:全表掃描。possible_keys:

possible_keys 列表示 MySQL 執行查詢時可能用到的索引。如果這一列為 NULL ,則表示沒有可能用到的索引;這種情況下,需要檢查 WHERE 語句中所使用的的列,看是否可以通過給這些列中某個或多個添加索引的方法來提高查詢性能。

key:

key 列表示 MySQL 實際使用到的索引。如果為 NULL,則表示未用到索引。

key_len:

key_len 列表示 MySQL 實際使用的索引的最大長度;當使用到聯合索引時,有可能是多個列的長度和。在滿足需求的前提下越短越好。如果 key 列顯示 NULL ,則 key_len 列也顯示 NULL 。

rows:

rows 列表示根據表統計信息及選用情況,大致估算出找到所需的記錄或所需讀取的行數,數值越小越好。

Extra:

這列包含了 MySQL 解析查詢的額外信息,通過這些信息,可以更準確的理解 MySQL 到底是如何執行查詢的。常見的值如下:

Using filesort:在排序時使用了外部的索引排序,沒有用到表內索引進行排序。 Using temporary:MySQL 需要創建臨時表來存儲查詢的結果,常見于 ORDER BY 和 GROUP BY。 Using index:表明查詢使用了覆蓋索引,不用回表,查詢效率非常高。 Using index condition:表示查詢優化器選擇使用了索引條件下推這個特性。 Using where:表明查詢使用了 WHERE 子句進行條件過濾。一般在沒有使用到索引的時候會出現。 Using join buffer (Block Nested Loop):連表查詢的方式,表示當被驅動表的沒有使用索引的時候,MySQL 會先將驅動表讀出來放到 join buffer 中,再遍歷被驅動表與驅動表進行查詢。

這里提醒下,當 Extra 列包含 Using filesort 或 Using temporary 時,MySQL 的性能可能會存在問題,需要盡可能避免。

以上就是帶你學習MySQL執行計劃的詳細內容,更多關于MySQL執行計劃的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 换网器_自动换网器_液压换网器--郑州海科熔体泵有限公司 | SRRC认证|CCC认证|CTA申请_IMEI|MAC地址注册-英利检测 | 南京办公用品网-办公文具用品批发-打印机耗材采购 | 精密五金冲压件_深圳五金冲压厂_钣金加工厂_五金模具加工-诚瑞丰科技股份有限公司 | 粘度计维修,在线粘度计,二手博勒飞粘度计维修|收购-天津市祥睿科技有限公司 | 北京三友信电子科技有限公司-ETC高速自动栏杆机|ETC机柜|激光车辆轮廓测量仪|嵌入式车道控制器 | LINK FASHION 童装·青少年装展 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 楼承板设备-楼承板成型机-免浇筑楼承板机器厂家-捡来 | 电动高尔夫球车|电动观光车|电动巡逻车|电动越野车厂家-绿友机械集团股份有限公司 | 2-羟基泽兰内酯-乙酰蒲公英萜醇-甘草查尔酮A-上海纯优生物科技有限公司 | 色谱柱-淋洗液罐-巴罗克试剂槽-巴氏吸管-5ml样品瓶-SBS液氮冻存管-上海希言科学仪器有限公司 | 碳纤维复合材料制品生产定制工厂订制厂家-凯夫拉凯芙拉碳纤维手机壳套-碳纤维雪茄盒外壳套-深圳市润大世纪新材料科技有限公司 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 分光色差仪,测色仪,反透射灯箱,爱色丽分光光度仪,美能达色差仪维修_苏州欣美和仪器有限公司 | 中国品牌门窗网_中国十大门窗品牌_著名门窗品牌 | 杭州荣奥家具有限公司-浙江办公家具,杭州办公家具厂 | 高效复合碳源-多核碳源生产厂家-污水处理反硝化菌种一长隆科技库巴鲁 | 威海防火彩钢板,威海岩棉复合板,威海彩钢瓦-文登区九龙岩棉复合板厂 | 活性炭-蜂窝-椰壳-柱状-粉状活性炭-河南唐达净水材料有限公司 | 西安微信朋友圈广告投放_微信朋友圈推广_西安度娘网络科技有限公司 | 磁力链接搜索神器_BT磁力狗_CILIMAO磁力猫_高效磁力搜索引擎2024 | 开平机_纵剪机厂家_开平机生产厂家|诚信互赢-泰安瑞烨精工机械制造有限公司 | 带式压滤机_污泥压滤机_污泥脱水机_带式过滤机_带式压滤机厂家-河南恒磊环保设备有限公司 | 防爆暖风机_防爆电暖器_防爆电暖风机_防爆电热油汀_南阳市中通智能科技集团有限公司 | 知网论文检测系统入口_论文查重免费查重_中国知网论文查询_学术不端检测系统 | 越南专线物流_东莞国际物流_东南亚专线物流_行通物流 | 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | EFM 022静电场测试仪-套帽式风量计-静电平板监测器-上海民仪电子有限公司 | 博客-悦享汽车品质生活| 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 北钻固控设备|石油钻采设备-石油固控设备厂家 | 红酒招商加盟-葡萄酒加盟-进口红酒代理-青岛枞木酒业有限公司 | 有源电力滤波装置-电力有源滤波器-低压穿排电流互感器|安科瑞 | 青岛成人高考_山东成考报名网| 韦伯电梯有限公司| 众品家具网-家具品牌招商_家具代理加盟_家具门户的首选网络媒体。 | 无线讲解器-导游讲解器-自助讲解器-分区讲解系统 品牌生产厂家[鹰米讲解-合肥市徽马信息科技有限公司] | 免费B2B信息推广发布平台 - 推发网| 涿州网站建设_网站设计_网站制作_做网站_固安良言多米网络公司 | 胜为光纤光缆_光纤跳线_单模尾纤_光纤收发器_ODF光纤配线架厂家直销_北京睿创胜为科技有限公司 - 北京睿创胜为科技有限公司 | 碳纤维布-植筋胶-灌缝胶-固特嘉加固材料公司|