mysql中關於關聯索引的問題——對a,b,c三個字段建立聯合索引,那么查詢時使用其中的2個作為查詢條件,是否還會走索引?


情況描述:在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語句如下所示:

以上是針對普通的字段建立聯合索引的測試情況及截圖,歡迎小伙伴們來補充~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM