mysql的聯(lián)合索引(復(fù)合索引)的實(shí)現(xià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,col2SELECT * 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)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. DB2數(shù)據(jù)庫(kù)更新執(zhí)行計(jì)劃的幾個(gè)常見的方法2. 分析DB2活動(dòng)日志滿的原因及解決DB2日志滿方法與避免方案3. 影響SQL server性能的關(guān)鍵三個(gè)方面 4. Oracle面試題及答案超全整理5. MySQL找出未提交事務(wù)的SQL實(shí)例淺析6. 淺談MySQL之select優(yōu)化方案7. SQL語(yǔ)句如何實(shí)現(xiàn)超簡(jiǎn)單的多表查詢8. Mysql命令行連接遠(yuǎn)程/本地?cái)?shù)據(jù)庫(kù)詳解9. SQL Server中T-SQL標(biāo)識(shí)符介紹與無(wú)排序生成序號(hào)的方法10. Oracle的約束介紹與約束維護(hù)
