首頁 >資料庫 >mysql教程 >深入了解MySQL中的組合索引,看看與單列索引的差異

深入了解MySQL中的組合索引,看看與單列索引的差異

青灯夜游
青灯夜游轉載
2021-11-03 19:28:157173瀏覽

這篇文章帶大家了解一下MySQL中的組合索引,介紹一下創建、刪除組合索引的方法,聊聊組合索引陷阱、組合索引與單列索引的區別、組合索引使用場景,希望對大家有所幫助!

深入了解MySQL中的組合索引,看看與單列索引的差異

什麼是組合索引

兩個或更多個欄位上的索引被稱為聯合索引,聯合索引又叫組合索引。 【相關推薦:mysql影片教學

例如索引是key index (a,b,c) 可以支援a | a,b| a ,b,c 3 種組合進行查找,但不支援b,c 進行查找。在使用的時候,a, c 組合也可以用,但實際上只用到了a 的索引

深入了解MySQL中的組合索引,看看與單列索引的差異

建立組合索引

-- 普通的组合索引
create index index_name on table_name (column1, column2, ...)
-- 组合要求唯一的索引,相比与上一种,多出了 【unique】关键字
create unique index index_name on table_name (column1, column2, ...)

深入了解MySQL中的組合索引,看看與單列索引的差異

刪除組合索引

-- 用法 1
drop index index_name on talbe_name
-- 用法 2
alter table table_name drop index index_name
-- 用法 3,对 2 的包装
alter table table_name drop primary key

單一列索引陷阱

深入了解MySQL中的組合索引,看看與單列索引的差異

深入了解MySQL中的組合索引,看看與單列索引的差異

#如圖所示,我們建立了2 個索引,在where 中使用and 進行查詢是,從執行計畫裡看只使用到了第一個條件上的索引,後續的索引直接被忽略掉

組合索引陷阱

如圖,現在建立組合索引a ,b,c

深入了解MySQL中的組合索引,看看與單列索引的差異

上圖的條件查詢為b,a,c,mysql 會自動處理條件順序變成a,b, c , 再使用定義好的組合索引

深入了解MySQL中的組合索引,看看與單列索引的差異

上圖的查詢條件是b,a,同樣的,mysql 調整條件順序為a,b,再走組合索引

深入了解MySQL中的組合索引,看看與單列索引的差異

上圖的查詢條件是b,c,很明顯,由於沒有使用a 作為條件列,導致mysql 沒有使用組合索引

與單列索引的區別

聯合索引中列的順序非常重要,從左原則。

單一索引就是一個一個起作用,也就是說有三個單一索引,哪個條件查詢在前哪個起作用,其他不起作用。

組合索引使用場景

  • where 條件會經常出現的,且目前表的數量比較大。

  • where 條件中是用 and 而不是 or 的時候。

  • 聯合索引比單一索引更適合,因為索引佔用一定磁碟空間,也就說明有一定的開銷,如果多個單一索引比較多,那麼多資源的浪費也比較多,聯合索引相當於對多個列建索引,並且只建一次,and 條件下非常適合。

更多程式相關知識,請造訪:程式設計影片! !

以上是深入了解MySQL中的組合索引,看看與單列索引的差異的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.cn。如有侵權,請聯絡admin@php.cn刪除