Mysql 索引最左匹配原則

假設(shè)建立這樣一個聯(lián)合索引
KEYidx(name, age, postion) USING BTREE


  • 索引的本質(zhì)是幫助MYSQL高效獲取數(shù)據(jù)的排好序數(shù)據(jù)結(jié)構(gòu)(一般都是B樹)從左到右依次遞增,非int類型字典排序。
    底層存放示例

他是按照索引的字段,第一個字段排序,相等的話,則看第二個字段比較大小。所以如果查詢條件跳過第一個字段,直接查詢第二、第三,或者是第三字段的話,那么這個是無序的,自然用不了索引。

--  如果聯(lián)合索引是 INDEX `idx`(`realname`, `mobile`, `phone`) USING BTREE (注意和上面的案例圖片不是一個表,但是索引結(jié)構(gòu)相同)
EXPLAIN SELECT * FROM zt_user WHERE realname = 'lin' AND mobile = '1732100' AND phone = '123@qq.com';

EXPLAIN SELECT * FROM zt_user WHERE mobile = '1732100' AND phone = '123@qq.com';

EXPLAIN SELECT * FROM zt_user WHERE phone = '123@qq.com';

explain后的執(zhí)行情況是:

結(jié)果一

結(jié)果二

結(jié)果三


mysql 的索引最左原則就很清晰了。索引多個字段,會按照字段順序依次比較大小建立索引,如果跳過這個順序的話,則索引失效。前提是沒有其他索引進(jìn)行影響

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容