透徹理解聯合索引 a,b,c

2021-10-08 12:01:14 字數 1382 閱讀 1871

目錄:

用到索引的有a,ab,abc,ac 因為優化器會自動調整and前後的順序,所以ba,cba,bca,ca都會用到索引,其他的都不會用到該索引。ac這一組僅僅是a用到索引。

組合索引 有「最左字首」原則,遇到範圍查詢(>、

聯合索引是一顆b+樹(a,b)

情況描述:在mysql的user表中,對a,b,c三個字段建立聯合索引,那麼查詢時使用其中的2個作為查詢條件,是否還會走索引?

根據查詢欄位的位置不同來決定,如查詢a, a,b a,b,c a,c 都可以走索引的,其他條件的查詢不能走索引。

組合索引 有「最左字首」原則。就是只從最左面的開始組合,並不是所有只要含有這三列存在的字段的查詢都會用到該組合索引。

驗證過程如下所示:

首先,在sqlyog中建立乙個user表,如下圖所示;

對中間3個字段(user_name,user_age,user_password)進行聯合索引 index_user_join

查詢情況如下所示:

1.同時查詢這3個字段作為條件的sql,索引情況及sql語句如下所示:

select *from t_user where user_name=『zs』 and user_age=20 and user_password=『123456』;

從執行結果上可以看到是從走索引進行查詢的

2.使用user_age和user_password作為查詢條件進行查詢,索引及sql語句如下所示:

3.使用user_name和user_password作為查詢條件進行查詢,索引及sql語句如下所示:

4.使用user_name作為查詢條件進行查詢,索引及sql語句如下所示:

5.使用user_age作為查詢條件進行查詢,索引及sql語句如下所示:

6.使用user_password作為查詢條件進行查詢,索引及sql語句如下所示:

以上是針對普通的字段建立聯合索引的測試情況及截圖,

mysql聯合索引abc

建立測試表 set names utf8mb4 set foreign key checks 0 create table test id int 11 not null auto increment,a int 11 not null default 1,b int 11 not null def...

聯合索引ABC的幾種索引利用情況

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

透徹理解函式

建議先看一下前一篇 透徹理解指標 可以將函式看成一種型別,和其他變數型別一樣,包括函式的宣告和函式的定義,只要宣告或定義了乙個函式,就向系統提供了乙個符號。一,函式的定義 宣告就不說了,只是提供乙個符號 int func void 定義了函式func,func本身就代表了這個函式的位址,與 func...