mysql復合索引怎麼理解 關於復合索引的一些理解

2021-10-18 02:33:31 字數 1035 閱讀 8186

前面單獨寫了關於復合索引中的最左字首原則的仔細分析,接下來我們就復合索引進行更深一步的了解。這裡的復合索引指的就是組合索引。

首先,我們重溫一下復合索引的基本概念,就是在兩個及以上字段建立乙個索引。它的存在主要是為了多條件的查詢,比如說where後面加了好幾個條件,乙個是a欄位相關的,乙個是b欄位相關的。這個時候就需要復合索引出場了。

關於復合索引的原理,我覺得知乎上這位大哥的回答是很清晰明了的。這裡貼上煉接,打個小廣告,歡迎去點讚。 mysql索引最左匹配原則的理解? 這裡是對這個最左匹配原則的理解,但他的回答已經深入了復合索引裡面的原理。我這裡就大概說一下他的核心思想:

首先是在建立復合索引時,它的第一欄位是有序的,然後第二欄位是無序的,有序的部分是在第一字段一樣的情況下建立起第二欄位的無序。所以這也就是前面說的最左字首原則的原理所在。所以我們就可以在自己的腦海裡搭建這樣的乙個模型。

然後就是根據它的原理說明它如何在多條件查詢時發揮的作用了。首先,第一順序是處理多個條件中的第一欄位中的條件,然後依次處理後面的條件。這樣就能充分發揮這個模型的作用了,使你查詢的效率最高。這個順序的處理是由mysql的查詢優化器來決定的,跟你放入多條件裡的無關。

然後,可能會引出這樣的乙個討論,在這樣的多條件查詢中,用單獨索引查詢還是復合索引查詢好啊?這個我主要參考了這位大哥的一番講解

講解的還是很不錯的,用我的話來簡單複述一下就是:

1,建立復合索引,在更新時肯定會付出比單索引更大的代價,畢竟你多嘛,全都要重新打造肯定是要花點時空間的。

2.但是,在多條件查詢上而言,由於復合索引的原理模型所在,絕對是比你乙個索引的查詢效率要高的,因為你除了第一欄位外,其他全部用的是遍歷,和原始手段無差別。那麼條件越多,你的劣勢就越明顯。而如果你給每個條件裡面的字段都建上索引,那麼mysql查詢優化器也只會選出最優的乙個索引來使用,因為多個索引連線在一次可能消耗更大,缺少一種聯絡,而復合索引就是給了你這種聯絡。

3.所以,只要那個查詢語句不是乙個欄位就能做完大部分的工作,而其他條件字段頻繁更新,就都會選擇復合索引。當產生大量這樣的查詢時,每點節省的資源累加起來都能節省伺服器達大筆資源。

嗯,就講到這裡,歡迎交流討論。

MySQL 復合索引該怎麼用

本文均已學習為主,不考慮實際業務。若在實際業務中,還需考慮增刪改的代價和實際需要。資料量大,查詢業務多的 where從句 group by從句 order by從句 on從句 中的字段,可以考慮建索引。alter table t add index abc a,b,c 這裡有乙個原則 離散度大的列放...

mysql 復合索引

聯合索引又叫復合索引。對於復合索引 mysql從左到右的使用索引中的字段,乙個查詢可以只使用索引中的一部份,但只能是最左側部分。例如索引是key index a,b,c 可以支援a a,b a,b,c 3種組合進行查詢,但不支援 b,c進行查詢 當最左側欄位是常量引用時,索引就十分有效。兩個或更多個...

mysql 復合索引詳解

聯合索引又叫復合索引。對於復合索引 mysql從左到右的使用索引中的字段,乙個查詢可以只使用索引中的一部份,但只能是最左側部分。例如索引是key index a,b,c 可以支援a a,b a,b,c 3種組合進行查詢,但不支援 b,c進行查詢 當最左側欄位是常量引用時,索引就十分有效。兩個或更多個...