mysql 組合索性 Mysql之組合索引方法詳解

2021-10-19 18:30:03 字數 1321 閱讀 3057

對於任何dbms,索引都是進行優化的最主要的因素。對於少量的資料,沒有合適的索引影響不是很大,但是,當隨著資料量的增加,效能會急劇下降。

如果對多列進行索引(組合索引),列的順序非常重要,mysql僅能對索引最左邊的字首進行有效的查詢。例如:

假設存在組合索引(c1,c2),查詢語句select * from t1 where c1=1 and c2=2能夠使用該索引。查詢語句select * from t1 where c1=1也能夠使用該索引。但是,查詢語句select * from t1 where c2=2不能夠使用該索引,因為沒有組合索引的引導列,即,要想使用c2列進行查詢,必需出現c1等於某值。

舉例說明:

建立兩張表book(圖書表)和bookclass(圖書分類表) select b.isbn from book b where b.category_id = 1;

執行時間為:0.053s

使用explain來分析一下該sql:

type = all extra=using where,全表查詢沒有使用索引。

explain顯示了mysql如何使用索引來處理select語句以及連線表。可以幫助選擇更好的索引和寫出更優化的查詢語句。

all 對於每個來自於先前的表的行組合,進行完整的表掃瞄。如果表是第乙個沒標記const的表,這通常不好,並且通常在它情況下很差。通常可以增加更多的索引而不要使用all,使得行能基於前面的表中的常數值或列值被檢索出。

建立組合索引:

create index index_isbn on book (category_id,isbn) ;

再次執行sql,發現時間縮短到0.009s

使用explain來分析一下該sql:

type = ref,extra = using index 使用了索引查詢。

ref 對於每個來自於前面的表的行組合,所有有匹配索引值的行將從這張表中讀取。如果聯接只使用鍵的最左邊的字首,或如果鍵不是unique或primary key(換句話說,如果聯接不能基於關鍵字選擇單個行的話),則使用ref。如果使用的鍵僅僅匹配少量行,該聯接型別是不錯的。

mysql指定索性 MySQL入門之索引

索引 1 什麼是索引 索引是一種快速查詢表中內容的機制,使用索引可以提高查詢效率,相當於字典的目錄 可以將查詢過程中經常使用的條件設為索引 2 mysql中索引的型別 1 普通索引 這是最基本的索引型別,而且它沒有唯一性之類的限制。普通索引可以通過以下幾種方式建立 建立索引,例如create ind...

mysql組合索引 Mysql之組合索引方法詳解

對於任何dbms,索引都是進行優化的最主要的因素。對於少量的資料,沒有合適的索引影響不是很大,但是,當隨著資料量的增加,效能會急劇下降。如果對多列進行索引 組合索引 列的順序非常重要,mysql僅能對索引最左邊的字首進行有效的查詢。例如 假設存在組合索引 c1,c2 查詢語句select from ...

MySQL之組合查詢

即組合查詢,是將多條sql語句進行組合而來。因為在某些時候,一條sql語句無法滿足所有條件,所以採用組合查詢來解決。有兩種情況需要組合查詢 1 在單個查詢中,需要返回兩張類似或相同表資料組合在乙個結果集裡 2 對單張表中,無法用一條sql語句滿足多種要求的查詢。使用單張表舉例,一般來說單錶查詢在大部...