mysql idx Mysql 索引命中

2021-10-18 09:24:46 字數 1349 閱讀 7660

1、假設 test_demo表中有個 復合索引 idx(***,company,job)

1.1、最左字首原則

explain select * from test_demo where ***='' and job ='' and company=''

結果:type:ref、key:idx

explain select * from test_demo where job ='' and ***='' and company=''

結果:type:ref、key:idx

explain select * from test_demo where company='' and job ='' and ***=''

結果:type:ref、key:idx

explain select * from test_demo where job ='' and company=''

結果:type:all

explain select * from test_demo where company='' and job=''

結果:type:all

explain select * from test_demo where ***='' and job =''

結果:type:ref、key:idx

explain select * from test_demo where ***='' and company =''

結果:type:ref、key:idx

explain select * from test_demo where ***=''

結果:type:ref、key:idx

explain select * from test_demo where job =''

結果:type:all

explain select * from test_demo where company =''

結果:type:all

1.2、like不會命中索引

explain select * from test_demo where *** like '%%'

結果:type:all

1.3、or命中索引

explain select * from test_demo where ***='' or *** =''

結果:type : ref、key:idx

1.4、負向條件不會命中索引

explain select * from test_demo where ***!=''

結果:type:all

explain select * from test_demo where ***<>''

結果:type:all

索引,復合索引

這裡只看btree索引,至於雜湊索引和全文索引本文暫不討論。前言 索引是有效使用資料庫的基礎,但你的資料量很小的時候,或許通過掃瞄整表來訪問資料的效能還能接受,但當資料量極大時,當訪問量極大時,就一定需要通過索引的輔助才能有效地訪問資料。一般索引建立的好壞是效能好壞的成功關鍵。使用innodb作為資...

正向索引 反向索引 B Tree索引

索引就是為了更快的找出需要的資訊。一般都要進行排序。正向索引 開發出來用來儲存每個文件的單詞的列表。實際上,時間 記憶體 處理器等等資源的限制,技術上正向索引是不能實現的。既 儲存乙個文件中有那些單詞。有多少單詞就有多少列。然後對每一列進行某種排序。反向索引 其中每條記錄,記錄的是乙個單詞都在那些文...

DB索引 索引覆蓋 索引優化

索引 see 聚集索引 clustered index 聚集索引決定資料在磁碟上的物理排序,乙個表只能有乙個聚集索引,一般用primary key來約束。舉例 t user場景中,uid上的索引。非聚集索引 non clustered index 它並不決定資料在磁碟上的物理排序,索引上只包含被建立...