日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL的explain简书_MySQL Explain

發布時間:2024/10/8 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL的explain简书_MySQL Explain 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

慢日志

數據庫開啟慢查詢記錄執行時間比較久的SQL語句

mysql> SHOW VARIABLES LIKE "%slow%";

+---------------------+-------------------------------------------------------------+

| Variable_name | Value |

+---------------------+-------------------------------------------------------------+

| log_slow_queries | OFF |

| slow_launch_time | 2 |

| slow_query_log | OFF |

| slow_query_log_file | D:\phpStudy\PHPTutorial\MySQL\data\DESKTOP-H6DQQNO-slow.log |

+---------------------+-------------------------------------------------------------+

參數

描述

slow_query_log

是否開啟慢日志查詢,默認為OFF。

slow_query_log_file

慢日志文件配置路徑

log_slow_queries

已被slow_query_log取代,兼容性保留。

臨時開啟慢日志

mysql> SET GLOBAL slow_query_log="ON";

慢日志默認記錄的是查詢超過10秒的SQL語句

mysql> SHOW VARIABLES LIKE "long_query_time";

+-----------------+-----------+

| Variable_name | Value |

+-----------------+-----------+

| long_query_time | 10.000000 |

+-----------------+-----------+

1 row in set

優化器

EXPLAIN命令用于查詢SQL語句的執行計劃,可查看到SQL語句是否使用索引、是否做全表掃描。

EXPLAIN關鍵字用于模擬MySQL優化器執行SQL語句,用于分析SQL語句和表性能瓶頸。

EXPLAIN關鍵字可獲取信息包括

表讀取順序

數據讀取操作

可使用的索引

實際已使用的縮影

表之間的引用

表有多少行被優化器查詢

EXPLAIN SQL語句

例如:

mysql > EXPLAIN SELECT * FROM test.accounts WHERE 1=1;

+----+-------------+----------+------+---------------+------+---------+------+------+-------+

| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

+----+-------------+----------+------+---------------+------+---------+------+------+-------+

| 1 | SIMPLE | accounts | ALL | NULL | NULL | NULL | NULL | 2 | |

+----+-------------+----------+------+---------------+------+---------+------+------+-------+

1 row in set

字段

描述

id

查詢序列號,表示查詢中執行SELECT子句或操作表的順序,即表的讀取順序。

table

正在訪問的數據表

select_type

查詢類型,數據讀取操作的操作類型。

tpye

訪問類型

possible_keys

可能應用在當前表中的索引,那些索引可以使用。

key

實際使用的索引,哪些索引被實際使用。

ken_len

索引使用的字節數即索引長度

ref

索引列,表直接的引用。

rows

根據表統計信息以及索引選用情況,估算出查詢記錄所需掃描讀取的行數。每張表會有多少行被優化器查詢。

Extra

額外信息

查詢序列號id

SELECT查詢的序列號,包括一組數字,表示查詢中執行SELECT子句或操作表的順序,id字段通常于table字段搭配來分析。

多個ID相同,則表示讀取順序從上到下,依次執行。

多個ID不同,如是子查詢則ID序號遞增,ID越大優先級越高,越先被執行。

多個ID有相同也有不同,ID相同可認為是一組從上到下順序執行,組中ID不同則ID越大優先級越高優先執行。

查詢類型select_type

查詢類型

描述

SIMPLE

簡單查詢,不包含子查詢或聯合查詢。

PRIMAY

主查詢,查詢中若包含復雜的子部分,最外層查詢則會被標記為PRIMARY。

SUBQUERY

子查詢,即在SELECT或WHERE子句中包含子查詢。

DERIVED

衍生查詢,在FROM子句中包含了子查詢。

UNION

聯合查詢

UNION RESULT

從聯合表獲取結果中進行的查詢

訪問類型type

type表示查詢所使用的訪問而類型,用于表示查詢的SQL的好壞程序,從最好到最差依次為:system > const > eq_ref > ref > range > index > all

訪問類型

描述

NULL

MySQL在優化階段分解查詢語句,在執行階段不再訪問表或索引。

system

表只有一條記錄,等同于系統表。

const

通過索引一次即可找到,const用于primary key或unique索引,因為只匹配一行所以很快。

eq_ref

唯一性索引掃描,對于每個索引鍵,表中只有一條記錄與之匹配,常見于主鍵或唯一索引掃描。

ref

非唯一性索引掃描,返回匹配某個單獨值得所有行,本質上是一種索引訪問,返回所有匹配某個單獨值得行。

ref_or_null

類似ref但可搜索值為NULL得行

index_merge

使用索引合并得優化方法

range

只索引給定范圍得行,使用一個索引來選擇行,key列顯示使用哪個索引。

index

從索引中讀取

all

遍歷全表找到匹配行

總結

以上是生活随笔為你收集整理的MySQL的explain简书_MySQL Explain的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。