mysql的聯(lián)合索引(復(fù)合索引)的實現(xiàn)
聯(lián)合索引
本文中聯(lián)合索引的定義為(MySQL):
ALTER TABLE `table_name` ADD INDEX (`col1`,`col2`,`col3`);
聯(lián)合索引的優(yōu)點
若多個一條SQL,需要多個用到兩個條件
SELECT * FROM `user_info` WHERE username='XX',password='XXXXXX';
當(dāng)索引在檢索 password字段的時候,數(shù)據(jù)量大大縮小,索引的命中率減小,增大了索引的效率。
符合索引的索引體積比單獨索引的體積要小,而且只是一個索引樹,相比單獨列的索引要更加的節(jié)省時間復(fù)雜度和空間復(fù)雜度
聯(lián)合索引命中的本質(zhì)(最左匹配的理解)
定義
當(dāng)創(chuàng)建(col1,col2,col3)聯(lián)合索引時,相當(dāng)于創(chuàng)建了(col)單列索引,(clo1,clo2)聯(lián)合索引以及(col1,col2,col3)聯(lián)合索引想要索引生效,只能使用col1和col1,col2和col1,col2,col3三種組合;當(dāng)然,col1,col3組合也可以,但實際上只用到了col1的索引,col3并沒有用到!
圖解

通俗理解
聯(lián)合索引相當(dāng)于一個按照姓氏——名字的一個電話簿,只能先確定姓氏才可以命中索引,下列可以正確命中聯(lián)合索引的語句( = 和IN直接的字段都可以亂序,MySQL的查詢優(yōu)化器可以優(yōu)化成索引識別的形式)
-- 只命中 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,同理,三個列的順可以顛倒 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ù)合索引)的實現(xiàn)的文章就介紹到這了,更多相關(guān)mysql 聯(lián)合索引 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
安裝MySQL時,輸入mysqld --install后,顯式該文件已存在問題
這篇文章主要介紹了安裝MySQL時,輸入mysqld --install后,顯式該文件已存在問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
MySQL數(shù)據(jù)過濾與計算字段實戰(zhàn)指南
本文介紹了MySQL數(shù)據(jù)過濾與計算字段的實戰(zhàn)技術(shù),包括多條件組合、通配符過濾、正則表達式搜索和計算字段的使用,感興趣的朋友跟隨小編一起看看吧2025-11-11
mysql基礎(chǔ):mysqld_safe 啟動執(zhí)行流程詳解
本篇文章是對mysql基礎(chǔ)中的mysqld_safe啟動執(zhí)行流程進行了詳細的分析介紹,需要的朋友參考下2013-06-06
Window10下mysql 5.7.21 安裝配置方法圖文教程
這篇文章主要為大家詳細介紹了Window10下mysql 5.7.21 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-09-09

