第一步對執行計畫的理解:
explain(執行計畫)包含的資訊十分的豐富,著重關注以下幾個字段資訊。
①id,select子句或表執行順序,id相同,從上到下執行,id不同,id值越大,執行優先順序越高。
②type,type主要取值及其表示sql的好壞程度(由好到差排序):system>const>eq_ref>ref>range>index>all。保證range,最好到ref。
③key,實際被使用的索引列。
④ref,關聯的字段,常量等值查詢,顯示為const,如果為連線查詢,顯示關聯的字段。
⑤extra,額外資訊,使用優先順序using index>using filesort(九死一生)>using temporary(十死無生)。
第二步:
①全值匹配。
②最佳左字首法則:帶頭大哥不能死,中間兄弟不能斷;帶頭大哥可跑路,老二也可跟著跑,其餘兄弟只能死。a b c d
③索引列上不計算。
④覆蓋索引記住用。
⑤不等於、is null、is not null導致索引失效。
⑥like百分加右邊,加左邊導致索引失效,解決方法:使用覆蓋索引。
⑦字串不加單引號導致索引失效。
⑧少用or,用or導致索引失效。
99①最佳左字首法則。
#1.在等值查詢時,更改索引列順序,並不會影響explain的執行結果,因為mysql底層會進行優化。
#2.在使用order by時,注意索引順序、常量,以及可能會導致using filesort的情況。
②group by容易產生using temporary。
③通俗理解口訣:
全值匹配我最愛,最左字首要遵守;
帶頭大哥不能死,中間兄弟不能斷;
索引列上少計算,範圍之後全失效;
like百分寫最右,覆蓋索引不寫星;
不等空值還有or,索引失效要少用。
left join(左連線):右表建立索引。
right join(右連線):左表建立索引。
簡記:左右外連線,索引相反建(left:右表建,right:左表建)。
索引建立的原則
索引查詢是資料庫中重要的記錄查詢方法,要不要進入索引以及在那些欄位上建立索引都要和實際資料庫系統的查詢要求結合來考慮,下面給出實際中的一些通用的原則 1.在經常用作過濾器的字段上建立索引 2.在sql語句中經常進行group by order by的字段上建立索引 3.在不同值較少的字段上不必要建立...
建立索引的原則
索引可以提高資料的訪問速度,但同時也增加了插入 更新和刪除操作的處理時間。所以是否要為表增加索引 索引建立在那些欄位上,是建立索引前必須要考慮的問題。解決此問題就是分析應用程式的業務處理 資料使用,為經常被用作查詢條件 或者被要求排序的字段建立索引。索引是建立在資料庫表中的某些列的上面。因此,在建立...
建立索引的原則
1 定義主鍵的資料列一定要建立索引。2 定義有外來鍵的資料列一定要建立索引。3 對於經常查詢的資料列最好建立索引。4 對於需要在指定範圍內的快速或頻繁查詢的資料列 5 經常用在where 子句中的資料列。6 經常出現在關鍵字order by group by distinct後面的字段,建立索引。如...