MySQL學習15 索引的使用

2021-10-08 16:11:56 字數 1962 閱讀 7044

復合索引

覆蓋索引

索引種類

描述普通索引

最基本的索引,沒有任何限制,僅加速查詢。

唯一索引

索引列的值必須唯一,但允許有空值。

主鍵索引

一種特殊的唯一索引,不允許有空值。一般是在建表的同時自動建立主鍵索引。

復合索引

兩個或多個列上的索引被稱作復合索引。

全文索引

對文字內容進行分詞索引。

# 建立索引

# 建立普通索引

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...