學習筆記 mysql索引(四) 多列索引

2021-07-26 03:07:44 字數 740 閱讀 8926

多列索引有兩個意思,乙個是在多個列上建立乙個索引,另乙個意思是在多個列上分別建立索引。

比較直觀能夠想到,如果是在多個列上建立乙個索引,那麼如果where條件裡正好又是這些列,那麼將獲得較好的效能。如果分別建立索引,where中又有多個分別建立的索引的列,那mysql優化器將如何處理呢?

explain select sakila.actor.first_name, sakila.actor.last_name from sakila.actor where sakila.actor.first_name=』a』 or sakila.actor.last_name=』b』

結果:

可見在or條件時,mysql優化器會分別使用索引查詢然後進行union操作

explain select sakila.actor.first_name, sakila.actor.last_name from sakila.actor where sakila.actor.first_name=』a』 and sakila.actor.last_name=』b』, 結果:

在and條件時,其中乙個索引被使用了,using index condition是mysql 5.6出來的新特性,叫做「索引條件推送」(暫時理解不了)

or條件時,就算對多列建立了聯合索引,優化結果也是使用union。

多列索引另乙個話題就是順序問題,在乙個多列的b樹索引中,索引列的順序意味著索引首先按照最左列進行排序。選擇索引列順序的一般法則是:將選擇性最高的列放在索引的最前列

mysql多列索引 MySQL的多列索引

什麼是索引?索引用來快速地尋找那些具有特定值的記錄,所有mysql索引都以b 樹的形式儲存。如果沒有索引,執行查詢時mysql必須從第乙個記錄開始掃瞄整個表的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就越高。如果作為搜尋條件的列上已經建立了索引,mysql無需掃瞄任何記錄...

MySql多列索引

多列索引 多列索引就是將多個列作為乙個索引,在乙個多列b tree索引中,索引列的順序意味著索引首先按照最左列進行排序,然後第二列第三列等等。所以可以按照公升序或者降序進行掃瞄,以滿足精確符合列順序的order by,group by和distinct等子句,所以,多列索引的順序至關重要,key 列...

mysql多列索引

1,資料庫每次查詢只能使用乙個索引 2,假設資料 表t a,b,c rowid 為物理位置 rowid a b c 1 1 1 1 2 2 1 13 3 2 2 14 4 1 3 3 5 2 3 12 6 1 2 5 7 2 3 9 8 1 2 2 9 1 3 6 10 2 2 11 11 2 2 ...