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 它並不決定資料在磁碟上的物理排序,索引上只包含被建立...