国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > MySQL > 正文

explain分析sql效率的方法

2024-07-24 12:52:10
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Explain命令在解決數(shù)據(jù)庫(kù)性能上是第一推薦使用命令,大部分的性能問(wèn)題可以通過(guò)此命令來(lái)簡(jiǎn)單的解決,Explain可以用來(lái)查看SQL語(yǔ)句的執(zhí)行效 果,可以幫助選擇更好的索引和優(yōu)化查詢語(yǔ)句,寫出更好的優(yōu)化語(yǔ)句。

Explain語(yǔ)法:

EXPLAIN tbl_name或:EXPLAIN [EXTENDED] SELECT select_options

前者可以得出一個(gè)表的字段結(jié)構(gòu)等等,后者主要是給出相關(guān)的一些索引信息,而今天要講述的重點(diǎn)是后者。

例:

EXPLAIN SELECT sum(amount) FROM customer a, payment b WHERE1 = 1 AND a.customer_id = b.customer_id AND a.email = 'JANE.BENNETT@sakilacustomer.org';

執(zhí)行結(jié)果:

下面對(duì)各個(gè)屬性進(jìn)行了解:

1、id:這是SELECT的查詢序列號(hào)

2、select_type:select_type就是select的類型,可以有以下幾種:

SIMPLE:簡(jiǎn)單SELECT(不使用UNION或子查詢等)

PRIMARY:最外面的SELECT

UNION:UNION中的第二個(gè)或后面的SELECT語(yǔ)句

DEPENDENT UNION:UNION中的第二個(gè)或后面的SELECT語(yǔ)句,取決于外面的查詢

UNION RESULT:UNION的結(jié)果。

SUBQUERY:子查詢中的第一個(gè)SELECT

DEPENDENT SUBQUERY:子查詢中的第一個(gè)SELECT,取決于外面的查詢

DERIVED:導(dǎo)出表的SELECT(FROM子句的子查詢)

3、table:顯示這一行的數(shù)據(jù)是關(guān)于哪張表的實(shí)際的表名(如select * from customer;) 或表的別名 (如 select * from customer a);

4、type:這列最重要,顯示了連接使用了哪種類別,有無(wú)使用索引,是使用Explain命令分析性能瓶頸的關(guān)鍵項(xiàng)之一。

結(jié)果值從好到壞依次是:

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

一般來(lái)說(shuō),得保證查詢至少達(dá)到range級(jí)別,最好能達(dá)到ref,否則就可能會(huì)出現(xiàn)性能問(wèn)題。

all: 意味著從表的第1行,往后,逐行做全表掃描.,運(yùn)氣不好掃描到最后一行.

index: 比all性能稍好一點(diǎn),
通俗的說(shuō): all 掃描所有的數(shù)據(jù)行,相當(dāng)于data_all index 掃描所有的索引節(jié)點(diǎn),相當(dāng)于index_all

注:all是沿著磁盤掃描,index是沿著索引掃描

range: 意思是查詢時(shí),能根據(jù)索引做范圍的掃描

explain select * from customer where customer_id > 4;

index_subquery 在子查詢中,基于除唯一索引之外的索引進(jìn)行掃描;

unique_subquery 在子查詢中,基于唯一索引進(jìn)行掃描,類似于EQ_REF;

index_merge 多重范圍掃描。兩表連接的每個(gè)表的連接字段上均有索引存在且索引有序,結(jié)果合并在一起。適用于作集合的并、交操作。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阳春市| 山阳县| 临沂市| 吴桥县| 桂东县| 宁蒗| 封开县| 呼伦贝尔市| 曲水县| 虹口区| 永登县| 民勤县| 津南区| 双鸭山市| 牡丹江市| 镇坪县| 海丰县| 怀宁县| 岳池县| 星子县| 重庆市| 阿尔山市| 称多县| 柘城县| 鹿泉市| 高要市| 渭源县| 绍兴县| 萨嘎县| 都安| 昌江| 湟中县| 灌云县| 英德市| 宜黄县| 铜陵市| 蒲城县| 衡阳市| 江城| 嘉祥县| 赤峰市|