情況描述:在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語句如下所示:
以上是針對普通的字段建立聯合索引的測試情況及截圖,歡迎小伙伴們來補充~