復合索引
覆蓋索引
索引種類
描述普通索引
最基本的索引,沒有任何限制,僅加速查詢。
唯一索引
索引列的值必須唯一,但允許有空值。
主鍵索引
一種特殊的唯一索引,不允許有空值。一般是在建表的同時自動建立主鍵索引。
復合索引
兩個或多個列上的索引被稱作復合索引。
全文索引
對文字內容進行分詞索引。
# 建立索引
# 建立普通索引
create
index 索引名 on 表名(建立索引的欄位名)
;# 建立唯一索引
create
unique
index 索引名 on 表名(建立索引的欄位名)
;# 建立復合索引
create
index 索引名 on 表名(建立索引的欄位名1
, 建立索引的欄位名2
, …)
;# 刪除索引
drop
index 索引名 on 表名;
# 檢視索引
show
index
from 表名;
# 修改表結構來新增索引
alter
table 表名 add
index 索引名(建立索引的欄位名)
;alter
table 表名 add
unique 索引名(建立索引的欄位名)
;# 建立表的時候直接指定索引
create
table 表名(..
.,欄位a 型別 not
null
,index 索引名(欄位a));
create
table 表名(..
.,欄位a 型別 not
null
,unique 索引名(欄位a)
建立復合索引(a, b, c),就相當於建立了(a, b, c)、(a, b)和(a)三個索引,這被稱為復合索引前導列特性;
在建立復合索引時應該將最常用作查詢條件的列放在最左邊,依次遞減;
使用覆蓋索引,只需要從索引中就能檢索到需要的資料,而不要再掃瞄資料表;
索引的體量往往要比資料表小很多,因此只讀取索引速度會非常快,也會極大減少資料訪問量;
mysql的查詢優化器會在執行查詢前判斷,是否有乙個索引可以覆蓋所有的查詢列;
並非所有型別的索引都可以作為覆蓋索引,覆蓋索引必須要儲存索引列的值。像雜湊索引、空間索引、全文索引等並不會真正儲存索引列的值。
知識總結,交流學習,不當之處敬請指正,謝謝!
MySQL索引的學習與使用
最近在做的模組資料量較大,且業務需求全部是查詢,所以嘗試通過新增索引來提公升查詢速度。既然學了就記下吧。索引可以在很大程度上提公升資料的檢索速度。索引實際上也是一張表,這個表裡會儲存索引字段,並指向實體記錄。mysql只對以下操作符才使用索引 between,in,以及某些時候的like 不以萬用字...
MySql聯合索引使用學習
具體學習如下,關鍵點為,設定了聯合索引後,只使用乙個時,只有放在第乙個的能生效,使用多個用and連線時,無關順序,都能生效,但是or不生效。原因為or連線的倆個查詢條件欄位中有乙個沒有索引的話,引擎會放棄索引而產生全表掃瞄 設定多個字段單獨為索引時,單個都能生效,使用多個用and連線時,只有第乙個生...
mysql索引技術名詞1 5
目錄注意 1.如果依靠主鍵查詢,葉子結點直接儲存資料 主鍵b 樹 2.如果依靠其他健查詢查詢,葉子結點儲存主鍵值,再通過主鍵值查詢資料。通過主鍵值查詢資料的過程叫做回表 普通b 樹欄位查詢主鍵,再到主鍵b 樹查詢資料1 select from table1 where name zhangsan 2...