您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“MySQL中的組合索引與單列索引的區(qū)別有哪些”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
兩個或更多個列上的索引被稱作聯(lián)合索引,聯(lián)合索引又叫組合索引。【相關(guān)推薦:mysql視頻教程】
例如索引是 key index (a,b,c)
可以支持 a | a,b| a,b,c
3 種組合進(jìn)行查找,但不支持 b,c
進(jìn)行查找。在使用的時候,a, c
組合也可以用,但實際上只用到了 a
的索引
-- 普通的組合索引 create index index_name on table_name (column1, column2, ...) -- 組合要求唯一的索引,相比與上一種,多出了 【unique】關(guān)鍵字 create unique index index_name on table_name (column1, column2, ...)
-- 用法 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
如圖所示,我們創(chuàng)建了 2 個索引,在 where 中使用 and
進(jìn)行查詢是,從執(zhí)行計劃里看只使用到了第一個條件上的索引,后續(xù)的索引直接被忽略掉
如圖,現(xiàn)在建立組合索引 a,b,c
上圖的條件查詢?yōu)?b,a,c
,mysql 會自動處理條件順序變?yōu)?a,b,c
, 再使用定義好的組合索引
上圖的查詢條件是 b,a
,同樣的,mysql 調(diào)整條件順序為 a,b
,再走組合索引
上圖的查詢條件是 b,c
,很明顯,由于沒有使用 a
作為條件列,導(dǎo)致 mysql 沒有使用組合索引
聯(lián)合索引中列的順序非常重要,從左原則。
單個索引就是一個一個起作用,也就是說有三個單個索引,哪個條件查詢在前哪個起作用,其他不起作用。
where 條件會經(jīng)常出現(xiàn)的,并且當(dāng)前表的數(shù)量比較大。
where 條件中是用 and
而非 or
的時候。
聯(lián)合索引比單個索引更適合,因為索引占用一定磁盤空間,也就說明有一定的開銷,如果多個單個索引比較多,那么多資源的浪費也比較多,聯(lián)合索引相當(dāng)于對多個列建索引,并且只建一次,and 條件下非常適合。
“MySQL中的組合索引與單列索引的區(qū)別有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。