Mysql中的聯合索引 字首索引 覆蓋索引

2021-07-30 15:04:28 字數 876 閱讀 4083

索引

索引是一種特殊的檔案,它們包含著對資料表裡所有記錄的引用指標。更通俗的說,資料庫索引好比是一本書前面的目錄,能加快資料庫的查詢速度。

聯合索引

又名復合索引,由兩個或多個列的索引。它規定了mysql從左到右地使用索引字段,對字段的順序有一定要求。乙個查詢可以只使用索引中的一部分,更準確地說是最左側部分(最左優先)。如索引是key index (a,b,c). 可以支援a | a,b| a,b,c 3種組合進行查詢,但不支援 b,c進行查詢 .當最左側欄位是常量引用時,索引就十分有效。

create

table test(a int, b int, c int, key(a, b, c));

字首索引

對於列的值較長,比如blob、text、varchar,就必須建立字首索引,即將值的前一部分作為索引。這樣既可以節約空間,又可以提高查詢效率。但無法使用字首索引做 order by 和 group by,也無法使用字首索引做覆蓋掃瞄。

# 語法

alter

table table_name add

key(column_name(prefix_length));

# 示例

alter

table city add

key(cityname(7))

覆蓋索引

跟聯合索引有點類似,就是在查詢t的時候只用去讀取索引而取得資料,無需進行二次查詢相關表。這樣的索引的葉子節點上面也包含了他們索引的資料。

判斷標準:使用explain,可以通過輸出的extra列來判斷,對於乙個索引覆蓋查詢,顯示為using index,mysql查詢優化器在執行查詢前會決定是否有索引覆蓋查詢。

mysql的聯合索引 mysql聯合索引詳解

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

mysql聯合索引詳解 mysql 聯合索引詳解

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

mysql聯合索引技術 mysql 聯合索引詳解

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