溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在mysql中實現一個聯合索引

發布時間:2021-03-18 15:07:02 來源:億速云 閱讀:307 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關怎么在mysql中實現一個聯合索引,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

聯合索引

聯合索引的定義為(MySQL):

ALTER TABLE `table_name` ADD INDEX (`col1`,`col2`,`col3`);

聯合索引的優點

若多個一條SQL,需要多個用到兩個條件

SELECT * FROM `user_info` WHERE username='XX',password='XXXXXX';

當索引在檢索 password字段的時候,數據量大大縮小,索引的命中率減小,增大了索引的效率。

符合索引的索引體積比單獨索引的體積要小,而且只是一個索引樹,相比單獨列的索引要更加的節省時間復雜度和空間復雜度

聯合索引命中的本質(最左匹配的理解)

定義

當創建(col1,col2,col3)聯合索引時,相當于創建了(col)單列索引,(clo1,clo2)聯合索引以及(col1,col2,col3)聯合索引想要索引生效,只能使用col1col1,col2col1,col2,col3三種組合;當然,col1,col3組合也可以,但實際上只用到了col1的索引,col3并沒有用到!

圖解

怎么在mysql中實現一個聯合索引

通俗理解

聯合索引相當于一個按照姓氏——名字的一個電話簿,只能先確定姓氏才可以命中索引,下列可以正確命中聯合索引的語句( = IN直接的字段都可以亂序,MySQL的查詢優化器可以優化成索引識別的形式)

-- 只命中 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';

關于怎么在mysql中實現一個聯合索引就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女