如何使用
開發(fā)運(yùn)維過程中,經(jīng)常碰到SQL執(zhí)行慢的情況,這時(shí)候可以通過Explain命令查看執(zhí)行計(jì)劃,根據(jù)執(zhí)行計(jì)劃分析問題進(jìn)而優(yōu)化SQL。
Explain用法其實(shí)不難,只需要在SQL語句前加上該關(guān)鍵字即可,例如explain select * from user,示例結(jié)果如圖:
Explain可以用在insert、update、delete、select語句上,通常我們更關(guān)注select的使用情況。
字段詳情
Explain使用起來簡單,但是想要弄懂每個(gè)字段的含義和類型卻是不太容易,我們需要弄懂每個(gè)字段的含義和取值類型,才能清楚的找到需要優(yōu)化的地方。
執(zhí)行計(jì)劃查詢結(jié)果的字段說明:
以上字段中有幾個(gè)重點(diǎn)關(guān)注字段,說明如下:
1)id 查詢標(biāo)識符:
執(zhí)行順序一般按照id由大到小,如果id相同,則按順序由上至下執(zhí)行。一般情況下id是正整數(shù),但當(dāng)存在Union操作時(shí),值可能為NULL。
2)select_type 查詢類型:
3)type 連接類型:
優(yōu)化目標(biāo):越往上性能約好,盡可能使用上面的type類型,避免ALL全表掃描。
總 結(jié)
對于需要優(yōu)化的SQL,我們可以用Explain來查看其執(zhí)行計(jì)劃。在執(zhí)行計(jì)劃中,重點(diǎn)關(guān)注type取值,它最能反應(yīng)出SQL目前的執(zhí)行效率級別。同時(shí)可以結(jié)合其他的字段,或者分解每個(gè)環(huán)節(jié)語句,來做更細(xì)致的分析。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/129542.html
摘要:如果語句中使用了子查詢集合操作臨時(shí)表等情況,會給列帶來很大的復(fù)雜性。會遞歸執(zhí)行這些子查詢,把結(jié)果放在臨時(shí)表里。查詢優(yōu)化器從中所選擇使用的索引。該字段顯示了查詢優(yōu)化器通過系統(tǒng)收集的統(tǒng)計(jì)信息估算出來的結(jié)果集記錄條數(shù)。 引言 優(yōu)化SQL,是DBA常見的工作之一。如何高效、快速地優(yōu)化一條語句,是每個(gè)DBA經(jīng)常要面對的一個(gè)問題。在日常的優(yōu)化工作中,我發(fā)現(xiàn)有很多操作是在優(yōu)化過程中必不可少的步驟。然...
摘要:如果該列是,則沒有相關(guān)的索引。要想強(qiáng)制使用或忽視列中的索引,在查詢中使用或者。這個(gè)值強(qiáng)調(diào)了語句會導(dǎo)致沒有符合條件的行。 寫一下Explain記錄一下 簡單粗暴的記錄一下,日常使用Explain是為了查看目標(biāo)SQL是不是用到了索引,也就是索引的使用情況,但是,沒寫這篇文章之前我使用Explain全靠猜,寫這個(gè)的目的也是自己整理學(xué)習(xí)一下,ok,步入正題 使用場景一般就是這種: 在查詢語句之...
閱讀 1357·2023-01-11 13:20
閱讀 1707·2023-01-11 13:20
閱讀 1215·2023-01-11 13:20
閱讀 1906·2023-01-11 13:20
閱讀 4165·2023-01-11 13:20
閱讀 2757·2023-01-11 13:20
閱讀 1402·2023-01-11 13:20
閱讀 3672·2023-01-11 13:20