校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > mysql explain的用法(使用explain優化查詢語句)

mysql explain的用法(使用explain優化查詢語句)

熱門標簽:東莞外呼企業管理系統 地圖簡圖標注 谷歌地圖標注位置圖解 桂林云電銷機器人收費 清遠申請400電話 手機外呼系統違法嗎 南通電銷外呼系統哪家強 如何選擇優質的外呼系統 沈陽智能外呼系統供應商

首先我來給一個簡單的例子,然后再來解釋explain列的信息。

表一:catefory 文章分類表:

CREATE TABLE IF NOT EXISTS `category` ( 
 `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, 
 `name` varchar(50) NOT NULL DEFAULT '', 
 PRIMARY KEY (`id`) 
) ENGINE=MyISAM 
INSERT INTO `test`.`category` VALUES (NULL , '分類1'); 
INSERT INTO `test`.`category` VALUES (NULL , '分類2'); 
INSERT INTO `test`.`category` VALUES (NULL , '分類3');

表二:article文章表:

CREATE TABLE IF NOT EXISTS `article` (
 `aid` int(11) NOT NULL,
 `cid` int(11) NOT NULL,
 `content` text NOT NULL,
 PRIMARY KEY (`aid`),
 KEY `cid` (`cid`)
) ENGINE=MyISAM
INSERT INTO `test`.`article` (`aid`, `cid`, `content`) VALUES ('', '7', '腳本之家(jb51.net)教程');

執行explain:

EXPLAIN SELECT name, content
FROM category, article
WHERE category.id = article.cid

得到結果:

EXPLAIN列的解釋:

id:選定的執行計劃中查詢的序列號。表示查詢中執行select子句或操作表的順序,id值越大優先級越高,越先被執行。id相同,執行順序由上至下。

select_type:查詢類型 說明

1、SIMPLE:簡單的select查詢,不使用union及子查詢
2、PRIMARY:最外層的select查詢
3、UNION:UNION中的第二個或隨后的select查詢,不依賴于外部查詢的結果集
4、DEPENDENT UNION:UNION中的第二個或隨后的select查詢,依賴于外部查詢的結果集
5、UNION RESULT: UNION查詢的結果集SUBQUERY子查詢中的第一個select查詢,不依賴于外部查詢的結果集
6、DEPENDENT SUBQUERY:子查詢中的第一個select查詢,依賴于外部查詢的結果集DERIVED用于from子句里有子查詢的情況。
MySQL會遞歸執行這些子查詢,把結果放在臨時表里。
7、UNCACHEABLE SUBQUERY:結果集不能被緩存的子查詢,必須重新為外層查詢的每一行進行評估
8、UNCACHEABLE UNION:UNION中的第二個或隨后的select查詢,屬于不可緩存的子查詢

table:顯示這一行的數據是關于哪張表的
type:這是重要的列,顯示連接使用了何種類型。從最好到最差的連接類型為const、eq_reg、ref、range、index和ALL
all: full table scan ;mysql將遍歷全表以找到匹配的行;
index : index scan; index 和 all的區別在于index類型只遍歷索引;
range:索引范圍掃描,對索引的掃描開始于某一點,返回匹配值的行,常見與between , ,>等查詢;
ref:非唯一性索引掃描,返回匹配某個單獨值的所有行,常見于使用非唯一索引即唯一索引的非唯一前綴進行查找;
eq_ref:唯一性索引掃描,對于每個索引鍵,表中只有一條記錄與之匹配,常用于主鍵或者唯一索引掃描;
const,system:當mysql對某查詢某部分進行優化,并轉為一個常量時,使用這些訪問類型。如果將主鍵置于where列表中,mysql就能將該查詢轉化為一個常量。
possible_keys:顯示可能應用在這張表中的索引。如果為空,沒有可能的索引??梢詾橄嚓P的域從WHERE語句中選擇一個合適的語句
key: 實際使用的索引。如果為NULL,則沒有使用索引。很少的情況下,MYSQL會選擇優化不足的索引。這種情況下,可以在SELECT語句中使用USE INDEX(indexname)來強制使用一個索引或者用IGNORE INDEX(indexname)來強制MYSQL忽略索引
key_len:使用的索引的長度。在不損失精確性的情況下,長度越短越好
ref:顯示索引的哪一列被使用了,如果可能的話,是一個常數
rows:MYSQL認為必須檢查的用來返回請求數據的行數
Extra:關于MYSQL如何解析查詢的額外信息。將在表4.3中討論,但這里可以看到的壞的例子是Using temporary和Using filesort,意思MYSQL根本不能使用索引,結果是檢索會很慢。
因為真正的優化會考慮到大數據,我會在后面寫更詳細的優化教程,今天累了!分享一個詳細的mysql explain語法及使用教程(Mysql_Explain_語法詳細解析.pdf)!

您可能感興趣的文章:
  • MySQL性能分析及explain的使用說明
  • mysql之explain使用詳解(分析索引)
  • MySql中如何使用 explain 查詢 SQL 的執行計劃
  • mysql開啟慢查詢(EXPLAIN SQL語句使用介紹)
  • mysql優化利器之explain使用介紹
  • MySQL性能優化神器Explain的基本使用分析
  • Mysql實驗之使用explain分析索引的走向
  • Mysql Explain命令的使用與分析
  • MySQL Explain使用詳解
  • MySQL中explain語句的基本使用教程

標簽:天津 貴州 重慶 湖州 內蒙古 臨沂 成都 常德

巨人網絡通訊聲明:本文標題《mysql explain的用法(使用explain優化查詢語句)》,本文關鍵詞  mysql,explain,的,用法,使用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mysql explain的用法(使用explain優化查詢語句)》相關的同類信息!
  • 本頁收集關于mysql explain的用法(使用explain優化查詢語句)的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 陵水| 深水埗区| 兴化市| 徐州市| 宕昌县| 西贡区| 连平县| 凤翔县| 临武县| 兴海县| 渝北区| 股票| 库车县| 扬州市| 许昌县| 永宁县| 牙克石市| 文昌市| 镇平县| 邮箱| 鹤岗市| 九台市| 米林县| 潞城市| 五寨县| 巴马| 麻栗坡县| 柘荣县| 景宁| 化州市| 满洲里市| 福海县| 沈丘县| 辽宁省| 修水县| 色达县| 本溪| 阆中市| 长子县| 沁源县| 图木舒克市|