聯合索引和最左字首原則

2021-10-11 01:12:17 字數 724 閱讀 4710

(1)也稱多列索引、復合索引。

(2)聯合索引就是把多個列按照順序放到乙個索引樹上。

(3)乙個索引上最多可以建16列。

(4)聯合索引可以看成排好序的陣列

排序規則是:先按照第乙個列進行排序,第二列再按照第一列排好序的基礎上再進行排序,依次類推

(5)需要按照最左字首原則才能生效

最左字首原則:按照最左邊的列開始的順序並且不能跳過其中的列。

如:(name, age,position)是乙個聯合索引,支援(name)(name, age)(name, age,position)查詢,不支援( age,position)查詢

有的時候你沒有使用最左字首原則寫sql,優化器可能會幫你進行優化成最左字首原則,如(age,name )也可能使用聯合索引。但是寫sql 的時候還是要嚴格按照最左字首原則而不是依靠優化器

5.6及之後索引條件下推對範圍查詢導致索引失效和跳字段導致索引失效進行了優化。 8中使用了鬆散索引掃瞄,對沒有帶頭大哥的情況進行了優化

(6)聯合索引能使用到的索引列越多越好

(7)如果表可以建聯合索引就優先建聯合索引,而不是分開多個單索引。

(8)範圍查詢會導致其右邊的列索引失效

(9)or肯定也是會使聯合索引失效。原因是聯合索引樹結構和最左字首原則中可知

聯合索引最左字首

最左字首匹配原則 之所以會有最左字首匹配原則和聯合索引的索引構建方式及儲存結構是有關係的。首先我們建立的index bcd b,c,d 索引,相當於建立了 b b c b c d 三個索引,看完下面你就知道為什麼相當於建立了三個索引。我們看,聯合索引是首先使用多列索引的第一列構建的索引樹,用上面id...

索引最左字首原則

今天在觀察慢sql統計的時候,發現了乙個sql的平均耗時長,而且總的掃瞄行數大,分析對應表的ddl,發現此表中只有乙個唯一索引index1 a,b,c 但是在查詢條件中沒有帶上a欄位,導致這個查詢sql沒有走索引,從而導致了全表掃瞄。這裡涉及到乙個索引最左字首原則,我們來一起看一下。下述摘自 通常我...

聯合索引的最左字首匹配原則介紹

聯合索引 所謂的聯合索引就是指,由兩個或以上的字段共同構成乙個索引。本文測試用例的資料表結構如下,一張簡簡單單的學生資訊表 tb student,僅包含四個字段 student id student name student age student addr 那比如說,我們現在的業務需求經常要通過學...