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

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

MySQL EXPLAIN語句的使用示例

瀏覽:4日期:2023-10-04 15:59:50

在MySQL優化的環節上,我們首先需要知道的就是我們當前的這句SQL語句在實際的數據庫中究竟是怎么執行的,才能談要如何優化它。而在MySQL中,就給我們提供了模擬語句執行的一個非常好用的關鍵字:EXPLAIN。EXPLAIN可以用來查看SQL語句的執行效果,可以幫助選擇更好的索引和優化查詢語句,寫出更好的優化語句。因此今天我們就來講一講這個關鍵字的一些基礎的用法與應用。

一、使用方法

EXPLAIN的使用方法非常簡單:

mysql> EXPLAIN SELECT * FROM user;

簡單來說,就是在原有的SQL語句前面加上EXPLAIN關鍵字,或者說是在EXPLAIN關鍵字后跟這你要檢查的SQL語句。

二、輸出結果

EXPLAIN語句的輸出結果才是我們想要的數據,也是我們分析的重點。我們先來看看上面的語句所給到的對應的結果的形式:

+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+| 1 | SIMPLE | user | NULL | ALL | NULL | NULL | NULL | NULL | 3 | 100.00 | NULL |+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+

EXPLAIN語句給到我們的數據總共有10列,接下來我們看一下一些在性能優化上有比較重要作用的數據列所代表的意思。

1.id

這個是select查詢的序列號。

2.select_type

當我們的SQL語句是非select語句的時候(即delete,update...),這個字段的值就是對應的操作類型(delete,update...)。

mysql> EXPLAIN INSERT INTO user VAULES(2,’ahong’,’31’);

此時的輸出select_type就是我們對應的INSERT:

+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+| 1 | INSERT | user | NULL | ALL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+

而當SQL語句時select語句的時候,他就是對應的一些詳細的select的類型,可以有如下幾種:

SIMPLE:簡單SELECT(不使用UNION或子查詢等)PRIMARY:最外面的SELECTUNION:UNION中的第二個或后面的SELECT語句DEPENDENT UNION:UNION中的第二個或后面的SELECT語句,取決于外面的查詢UNION RESULT:UNION的結果。SUBQUERY:子查詢中的第一個SELECTDEPENDENT SUBQUERY:子查詢中的第一個SELECT,取決于外面的查詢DERIVED:導出表的SELECT(FROM子句的子查詢)

下面就是一個最簡單的SIMPLE查詢的例子:

mysql> EXPLAIN SELECT * FROM user;

+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+| 1 | SIMPLE | user | NULL | ALL | NULL | NULL | NULL | NULL | 3 | 100.00 | NULL |+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+3.table

顯示這一步操作所訪問的數據是關于哪一張表的。

4.partitions

顯示表所使用的分區,如果要統計十年公司訂單的金額,可以把數據分為十個區,每一年代表一個區。這樣可以大大的提高查詢效率。

5.type

這是最重要的一列。顯示了連接使用了哪種類別,有無使用索引。是分析查詢性能的關鍵。結果性能從優到差分別有以下的情況:

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

而這幾種情況所代表的意義如下:

system、const: 可以將查詢的變量轉為常量. 如id=1; id為 主鍵或唯一鍵. eq_ref: 訪問索引,返回某單一行的數據.(通常在聯接時出現,查詢使用的索引為主鍵或惟一鍵) ref: 訪問索引,返回某個值的數據.(可以返回多行) 通常使用=時發生 range: 這個連接類型使用索引返回一個范圍中的行,比如使用>或<查找東西,并且該字段上建有索引時發生的情況(注:不一定好于index) index: 以索引的順序進行全表掃描,優點是不用排序,缺點是還要全表掃描 ALL: 全表掃描,應該盡量避免_

一般來說,得保證查詢至少達到range級別,最好能達到ref,否則就可能會出現性能問題。

6.possible_key

顯示查詢語句有可能會使用到的索引列。取值可能為一個,多個或者null。

7.key

key列顯示的是該查詢語句實際使用的索引列。如為null,則表示沒有使用索引。展示一下possible_key和key的實際效果:下面是一個在age列上建立索引的數據表,我們進行以下的查詢

mysql> explain select * from user where age = 1;

會得到以下的結果:

+----+-------------+-------+------------+------+---------------+------+---------+-------+------+----------+-------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+------+---------------+------+---------+-------+------+----------+-------+| 1 | SIMPLE | user | NULL | ref | age | age | 5 | const | 1 | 100.00 | NULL |+----+-------------+-------+------------+------+---------------+------+---------+-------+------+----------+-------+8.key_len

顯示的是當前的查詢語句所使用的索引的長度。在不損失精確性的情況下,長度越短越好.

9.ref

引用到的上一個表的列。

10.rows

根據表的情況和查詢語句的情況,MySQL會估算出返回最終結果所必須檢查的行的數量。該列的值越大查詢效率越差。

11.filtered

一個百分比的值,和rows 列的值一起使用,可以估計出查詢執行計劃(QEP)中的前一個表的結果集,從而確定join操作的循環次數。小表驅動大表,減輕連接的次數。

12.extra

關于MySQL如何解析查詢的額外信息,主要有以下幾種:

Extra中包含的值:

using index: 只用到索引,可以避免訪問表,性能很高。 using where: 使用到where來過濾數據, 不是所有的where clause都要顯示using where. 如以=方式訪問索引。 using tmporary: 用到臨時表去處理當前的查詢。 using filesort: 用到額外的排序,此時mysql會根據聯接類型瀏覽所有符合條件的記錄,并保存排序關鍵字和行指針,然后排序關鍵字并按順序檢索行。(當使用order by v1,而沒用到索引時,就會使用額外的排序)。 range checked for eache record(index map:N): 沒有好的索引可以使用。 Using index for group-by:__表明可以在索引中找到分組所需的所有數據,不需要查詢實際的表。explain select user_id from t_order group by user_id;_

以上就是MySQL EXPLAIN語句的使用示例的詳細內容,更多關于MySQL EXPLAIN語句的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 有机废气处理-rto焚烧炉-催化燃烧设备-VOC冷凝回收装置-三梯环境 | 继电器模组-IO端子台-plc连接线-省配线模组厂家-世麦德 | 废旧物资回收公司_广州废旧设备回收_报废设备物资回收-益美工厂设备回收公司 | 邢台人才网_邢台招聘网_邢台123招聘【智达人才网】 | 兰州牛肉面加盟,兰州牛肉拉面加盟-京穆兰牛肉面 | 氨水-液氨-工业氨水-氨水生产厂家-辽宁顺程化工 | 缓蚀除垢剂_循环水阻垢剂_反渗透锅炉阻垢剂_有机硫化物-郑州威大水处理材料有限公司 | 定制防伪标签_防伪标签印刷_防伪标签厂家-510品保防伪网 | 广州迈驰新GMP兽药包装机首页_药品包装机_中药散剂包装机 | 网架支座@球铰支座@钢结构支座@成品支座厂家@万向滑动支座_桥兴工程橡胶有限公司 | 无锡装修装潢公司,口碑好的装饰装修公司-无锡索美装饰设计工程有限公司 | 彭世修脚_修脚加盟_彭世修脚加盟_彭世足疗加盟_足疗加盟连锁_彭世修脚技术培训_彭世足疗 | 专业甜品培训学校_广东糖水培训_奶茶培训_特色小吃培训_广州烘趣甜品培训机构 | 液压油缸生产厂家-山东液压站-济南捷兴液压机电设备有限公司 | 茶楼装修设计_茶馆室内设计效果图_云臻轩茶楼装饰公司 | 吊篮式|移动式冷热冲击试验箱-二槽冷热冲击试验箱-广东科宝 | CE认证_FCC认证_CCC认证_MFI认证_UN38.3认证-微测检测 CNAS实验室 | 上海宿田自动化设备有限公司-双面/平面/单面贴标机 | 日本东丽膜_反渗透膜_RO膜价格_超滤膜_纳滤膜-北京东丽阳光官网 日本细胞免疫疗法_肿瘤免疫治疗_NK细胞疗法 - 免疫密码 | 首页_中夏易经起名网| 北京公积金代办/租房发票/租房备案-北京金鼎源公积金提取服务中心 | 北京网站建设首页,做网站选【优站网】,专注北京网站建设,北京网站推广,天津网站建设,天津网站推广,小程序,手机APP的开发。 | 众品地板网-地板品牌招商_地板装修设计_地板门户的首选网络媒体。 | 富森高压水枪-柴油驱动-养殖场高压清洗机-山东龙腾环保科技有限公司 | 重庆私家花园设计-别墅花园-庭院-景观设计-重庆彩木园林建设有限公司 | 天津中都白癜风医院_天津白癜风医院_天津治疗白癜风 | 天津蒸汽/热水锅炉-电锅炉安装维修直销厂家-天津鑫淼暖通设备有限公司 | 气体检测仪-氢气检测仪-可燃气体传感器-恶臭电子鼻-深国安电子 | 塑料异型材_PVC异型材_封边条生产厂家_PC灯罩_防撞扶手_医院扶手价格_东莞市怡美塑胶制品有限公司 | 立式壁挂广告机厂家-红外电容触摸一体机价格-华邦瀛 | NBA直播_NBA直播免费观看直播在线_NBA直播免费高清无插件在线观看-24直播网 | 粤丰硕水性环氧地坪漆-防静电自流平厂家-环保地坪涂料代理 | 仓储笼_金属箱租赁_循环包装_铁网箱_蝴蝶笼租赁_酷龙仓储笼租赁 测试治具|过炉治具|过锡炉治具|工装夹具|测试夹具|允睿自动化设备 | 异噻唑啉酮-均三嗪-三丹油-1227-中北杀菌剂厂家 | 刺绳_刀片刺网_刺丝滚笼_不锈钢刺绳生产厂家_安平县浩荣金属丝网制品有限公司-安平县浩荣金属丝网制品有限公司 | 高效复合碳源-多核碳源生产厂家-污水处理反硝化菌种一长隆科技库巴鲁 | 深圳诚暄fpc首页-柔性线路板,fpc柔性线路板打样生产厂家 | 生物颗粒燃烧机-生物质燃烧机-热风炉-生物颗粒蒸汽发生器-丽水市久凯能源设备有限公司 | 欧景装饰设计工程有限公司-无锡欧景装饰官网 | 扒渣机厂家_扒渣机价格_矿用扒渣机_铣挖机_撬毛台车_襄阳永力通扒渣机公司 | 能量回馈_制动单元_电梯节能_能耗制动_深圳市合兴加能科技有限公司 |