Featured image of post MySql中的explain之說明

MySql中的explain之說明

說明

1
2
3
4
5
6
7
8
INSERT INTO global_zz.gl_language_dic (config_key, language, config_value, module, id) VALUES ('ADJUST_TYPE_101', 'en', 'Salary bonus', 'activity-dic', generated);
INSERT INTO global_zz.gl_language_dic (config_key, language, config_value, module, id) VALUES ('ADJUST_TYPE_102', 'en', 'Event bonus', 'activity-dic', generated);
INSERT INTO global_zz.gl_language_dic (config_key, language, config_value, module, id) VALUES ('ADJUST_TYPE_103', 'en', 'Recharge bonus', 'activity-dic', generated);
INSERT INTO global_zz.gl_language_dic (config_key, language, config_value, module, id) VALUES ('ADJUST_TYPE_104', 'en', 'Test account bonus', 'activity-dic', generated);
INSERT INTO global_zz.gl_language_dic (config_key, language, config_value, module, id) VALUES ('ADJUST_TYPE_105', 'en', 'Compensation bonus', 'activity-dic', generated);
INSERT INTO global_zz.gl_language_dic (config_key, language, config_value, module, id) VALUES ('ADJUST_TYPE_106', 'en', 'Other bonus', 'activity-dic', generated);
INSERT INTO global_zz.gl_language_dic (config_key, language, config_value, module, id) VALUES ('ADJUST_TYPE_201', 'en', 'Decrease bonus', 'activity-dic', generated);

Explain是MySQL中用來診測執行效能的一個滿好用的工具的,用法大概就是在SQL語句前加上Explain就可以,例如

1
explain select * from user

這樣子,就會跳出許多的欄位

idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra
1SIMPLEurlnullALLnullnullnullnull200100null

接下來會說明各個欄位代表的意思

Id: 代表SQL的執行順序

Select_type:有四種可能

  1. Simple:簡單查詢
  2. Primary:代表是複雜查詢中,最外層的那個Select
  3. Subquery:代表的是複雜查詢中裡面的那個Select
  4. Derived:派生查詢,代表from後面跟著的查詢語句

Table:查了哪些表

Partitions:不太重要

Type:最為重要的屬性,代表Sql使用什麼樣的方式去查詢資料庫數據,由好到差分別是

System>const>eq_ref>ref>range>index>all

如果是Null代表不需要訪問表,可以從索引鍵中找出來

我的天,我寫到一半發現我的參考資料寫的已經致臻完美了,看參考資料就可以了

參考資料

https://blog.csdn.net/bugNoneNull/article/details/107489256

Licensed under CC BY-NC-SA 4.0