日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

MySQL EXPLAIN語句的使用示例

瀏覽:36日期: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 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美99久久| 日韩一区二区中文| 亚洲黄色影院| 国产精品日韩| 久久国产精品毛片| 男人操女人的视频在线观看欧美| 欧洲亚洲一区二区三区| 日本а中文在线天堂| 精品亚洲a∨| 人在线成免费视频| 欧洲一区二区三区精品| 久久国产亚洲| 亚洲天堂成人| 香蕉久久夜色精品国产| 综合激情网站| 国产乱论精品| 国产精品毛片一区二区在线看| 激情国产在线| 性欧美xxxx免费岛国不卡电影| 在线一区电影| 亚洲伊人影院| 日本欧美一区| 国产一区调教| 91精品国产调教在线观看| 欧美成人高清| 亚洲尤物av| 欧美日韩国产传媒| 蜜桃国内精品久久久久软件9| 日本国产亚洲| 亚洲午夜一级| 久久影院一区二区三区| 久热精品在线| 亚洲播播91| 91亚洲精品视频在线观看| 99久精品视频在线观看视频| 欧美日韩伊人| 五月精品视频| 麻豆视频在线看| 91欧美极品| 99riav1国产精品视频| 久久精品国产99国产精品| 免费不卡在线视频| 欧美日韩中文一区二区| 国产精品一区二区免费福利视频| 女同性一区二区三区人了人一| 欧美激情麻豆| 日韩在线视频一区二区三区| 亚洲一级二级| 国内在线观看一区二区三区| 日本综合视频| 黄色日韩精品| 高潮久久久久久久久久久久久久| 日本aⅴ精品一区二区三区| 影音国产精品| 伊人久久国产| 另类综合日韩欧美亚洲| 日韩中文字幕无砖| 亚洲免费精品| 日本久久成人网| 国产一区2区在线观看| 日韩国产91| 在线免费观看亚洲| 欧美日韩国产免费观看视频| а√在线中文在线新版| 国产精品激情| 日本va欧美va精品发布| 亚洲激情婷婷| 视频福利一区| 91亚洲成人| 麻豆精品一区二区综合av| 深夜日韩欧美| 免费欧美在线视频| 国产精品日本| 欧美网站在线| 国产韩日影视精品| 亚洲高清久久| 欧美影院三区| 欧美高清不卡| 91精品国产福利在线观看麻豆| 成人国产精品一区二区免费麻豆| 国产精品红桃| 国产一区 二区| 人人爱人人干婷婷丁香亚洲| 日韩精品视频中文字幕| 日韩精品一级| 日本欧美一区二区在线观看| 日韩激情精品| 国产一卡不卡| 国产精品videossex久久发布| 国产免费久久| 国产精品一级在线观看| 国产美女久久| 国产极品一区| 黄色精品视频| 午夜av不卡| 亚洲天堂免费电影| 国产在线看片免费视频在线观看| 97在线精品| 日韩精品欧美激情一区二区| 成人精品亚洲| 午夜免费一区| 蜜臀av亚洲一区中文字幕| 亚洲精品伊人| 国产精区一区二区| 国产一区二区三区不卡av | 国产精品地址| 久久精品国产亚洲aⅴ| 久久精品二区亚洲w码| 国产一区二区三区精品在线观看| 久久中文字幕一区二区三区| 成人亚洲精品| 久久久夜夜夜| 悠悠资源网久久精品| 蜜臀精品一区二区三区在线观看| 日韩中出av| 麻豆极品一区二区三区| 国产在线视频欧美一区| 亚洲天堂一区二区| 免费欧美日韩| 日本成人手机在线| 精品淫伦v久久水蜜桃| 日本久久成人网| 麻豆成人在线| 国产精品一国产精品k频道56| 国产精品hd| 中文在线免费视频| 精品一区欧美| 日本不卡一二三区黄网| 美女久久久久久| 久久精品在线| 日韩精品一二三区| 久久国产婷婷国产香蕉| 国产欧洲在线| 欧美专区一区二区三区| 国产精品午夜av| 午夜av成人| 亚州精品视频| 老牛国内精品亚洲成av人片| 国产videos久久| 国产综合亚洲精品一区二| 综合欧美精品| 国产专区精品| 六月婷婷一区| 狂野欧美性猛交xxxx| 免费国产自久久久久三四区久久 | 国产精品v日韩精品v欧美精品网站| 成人美女视频| 色狠狠一区二区三区| 日韩欧美视频专区| 亚洲久久在线| 蜜臀国产一区| 一区二区日韩免费看| 精品亚洲a∨| 久久av一区二区三区| 麻豆视频一区二区| 午夜在线精品偷拍| sm捆绑调教国产免费网站在线观看| 一区二区电影| 美女一区网站| 国产午夜精品一区在线观看| 久久国产电影| 久久99蜜桃| 石原莉奈一区二区三区在线观看| 国产不卡精品在线| 午夜天堂精品久久久久| 日韩欧美一区二区三区在线观看| 亚洲v天堂v手机在线| 欧洲亚洲一区二区三区| 国产精品综合| 日韩午夜高潮| 国产成人77亚洲精品www| 午夜精品影视国产一区在线麻豆| 神马日本精品| 国产精品成人自拍| 免费精品视频在线| 久久久久久美女精品| 国产精久久一区二区| 首页亚洲欧美制服丝腿| 欧美13videosex性极品| 国产精品亚洲产品| 亚洲在线久久| 亚洲成人国产| 免费一级欧美在线观看视频| 亚洲精品极品| 国产模特精品视频久久久久| 成人日韩在线| 精品九九在线| 国产日韩一区二区三区在线播放 | 在线看片国产福利你懂的| 欧美一区免费| 蜜桃91丨九色丨蝌蚪91桃色| 99热国内精品| 精品国产第一福利网站| 欧美成人一二区| 日本精品久久| 日韩中文字幕麻豆| 亚洲精品一区二区在线看| 日韩欧美国产精品综合嫩v| 久久精品国产99国产精品| 国产美女久久|