mysql的聯(lián)合索引(復(fù)合索引)的實(shí)現(xiàn)
聯(lián)合索引
本文中聯(lián)合索引的定義為(MySQL):
ALTER TABLE `table_name` ADD INDEX (`col1`,`col2`,`col3`);
聯(lián)合索引的優(yōu)點(diǎn)
若多個(gè)一條SQL,需要多個(gè)用到兩個(gè)條件
SELECT * FROM `user_info` WHERE username='XX',password='XXXXXX';
當(dāng)索引在檢索 password
字段的時(shí)候,數(shù)據(jù)量大大縮小,索引的命中率減小,增大了索引的效率。
符合索引的索引體積比單獨(dú)索引的體積要小,而且只是一個(gè)索引樹,相比單獨(dú)列的索引要更加的節(jié)省時(shí)間復(fù)雜度和空間復(fù)雜度
聯(lián)合索引命中的本質(zhì)(最左匹配的理解)
定義
當(dāng)創(chuàng)建(col1
,col2
,col3
)聯(lián)合索引時(shí),相當(dāng)于創(chuàng)建了(col
)單列索引,(clo1
,clo2
)聯(lián)合索引以及(col1
,col2
,col3
)聯(lián)合索引想要索引生效,只能使用col1
和col1
,col2
和col1
,col2
,col3
三種組合;當(dāng)然,col1
,col3
組合也可以,但實(shí)際上只用到了col1
的索引,col3
并沒(méi)有用到!
圖解
通俗理解
聯(lián)合索引相當(dāng)于一個(gè)按照姓氏——名字
的一個(gè)電話簿,只能先確定姓氏才可以命中索引,下列可以正確命中聯(lián)合索引的語(yǔ)句( =
和IN
直接的字段都可以亂序,MySQL的查詢優(yōu)化器可以優(yōu)化成索引識(shí)別的形式)
-- 只命中 col1,col2 SELECT * FROM `table_name` WHERE `col1`='XX';
-- 命中col1,col2。col1,col2的順序可以顛倒 SELECT * FROM `table_name` WHERE `clo1`='XX',`clo2`='XXX'; SELECT * FROM `table_name` WHERE `clo2`='XXX', `clo1`='XX';
-- 命中col1,col2,col3,同理,三個(gè)列的順可以顛倒 SELECT * FROM `table_name` WHERE `col1`='X',`col2`='XX',`col3`='XXX'; SELECT * FROM `table_name` WHERE `col1`='X',`col3`='XX',`col2`='XXX'; SELECT * FROM `table_name` WHERE `col2`='X',`col3`='XX',`col1`='XXX';
到此這篇關(guān)于mysql的聯(lián)合索引(復(fù)合索引)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)mysql 聯(lián)合索引 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL數(shù)據(jù)庫(kù)導(dǎo)出與導(dǎo)入及常見錯(cuò)誤解決
MySQL數(shù)據(jù)庫(kù)導(dǎo)出與導(dǎo)入的過(guò)程中將會(huì)發(fā)生眾多不可預(yù)知的錯(cuò)誤,本文整理了一些常見錯(cuò)誤及相應(yīng)的解決方法,遇到類似情況的朋友可以參考下,希望對(duì)大家有所幫助2013-07-07一步步帶你學(xué)習(xí)設(shè)計(jì)MySQL索引數(shù)據(jù)結(jié)構(gòu)
索引是存儲(chǔ)索引用于快速找到數(shù)據(jù)記錄的一種數(shù)據(jù)結(jié)構(gòu),就好比一本書的目錄部分,通過(guò)目錄中對(duì)應(yīng)的文章的頁(yè)碼,便可以快速定位到需要的文章,下面這篇文章主要給大家介紹了關(guān)于MySQL索引數(shù)據(jù)結(jié)構(gòu)的相關(guān)資料,需要的朋友可以參考下2022-11-11Java的Struts框架中的主題模板和國(guó)際化設(shè)置
這篇文章主要介紹了Java的Struts框架中的主題模板和國(guó)際化設(shè)置,Struts是Java的SSH三大web開放框架之一,需要的朋友可以參考下2015-12-12從零開始學(xué)習(xí)SQL查詢語(yǔ)句執(zhí)行順序
sql語(yǔ)言中的查詢的執(zhí)行順序,以前不是很了解,最近查閱了相關(guān)資料,在sql語(yǔ)言中,第一個(gè)被處理的字句總是from字句,最后執(zhí)行的limit操作,現(xiàn)在小編來(lái)和大家一起學(xué)習(xí)一下2019-05-05