MySQL索引型別

2021-10-09 10:00:46 字數 2050 閱讀 2563

索引可以提公升查詢速度,會影響where查詢,以及order by排序。mysql索引型別如下:

這是最基本的索引型別,基於普通字段建立的索引,沒有任何限制。 建立普通索引的方法如下:

create index 《索引的名字》 on tablename (欄位名)

;alter table tablename add index [索引的名字]

(欄位名)

; create table tablename ([.

..], index [索引的名字]

(欄位名)

);

與"普通索引"類似,不同的就是:索引欄位的值必須唯一,但允許有空值 。在建立或修改表時追加唯一

約束,就會自動建立對應的唯一索引。 建立唯一索引的方法如下:

create unique index 《索引的名字》 on tablename (欄位名)

; alter table tablename add unique index [索引的名字]

(欄位名)

; create table tablename ([.

..], unique [索引的名字]

(欄位名)

;

它是一種特殊的唯一索引,不允許有空值。在建立或修改表時追加主鍵約束即可,每個表只能有乙個主

鍵。 建立主鍵索引的方法如下:

create table tablename ([.

..], primary key (欄位名));

alter table tablename add primary key (欄位名)

;

單一索引是指索引列為一列的情況,即新建索引的語句只實施在一列上;使用者可以在多個列上建立索 引,這種索引叫做組復合索引(組合索引)。復合索引可以代替多個單一索引,相比多個單一索引復合 索引所需的開銷更小。

索引同時有兩個概念叫做窄索引和寬索引,窄索引是指索引列為1-2列的索引,寬索引也就是索引列超 過2列的索引,設計索引的乙個重要原則就是能用窄索引不用寬索引,因為窄索引往往比組合索引更有 效。

建立組合索引的方法如下:

create index 《索引的名字》 on tablename (欄位名1,欄位名2...

); alter table tablename add index [索引的名字]

(欄位名1,欄位名2...

);create table tablename ([.

..], index [索引的名字]

(欄位名1,欄位名2...

));

復合索引使用注意事項:

查詢操作在資料量比較少時,可以使用like模糊查詢,但是對於大量的文字資料檢索,效率很低。如果 使用全文索引,查詢速度會比like快很多倍。在mysql 5.6 以前的版本,只有myisam儲存引擎支援全 文索引,從mysql 5.6開始myisam和innodb儲存引擎均支援。

建立全文索引的方法如下:

create fulltext index 《索引的名字》 on tablename (欄位名)

; alter table tablename add fulltext [索引的名字]

(欄位名)

; create table tablename ([.

..], fulltext key [索引的名字]

(欄位名)

;

和常用的like模糊查詢不同,全文索引有自己的語法格式,使用 match 和 against 關鍵字,比如

select * from user where match

(name)

against

('aaa'

);

全文索引使用注意事項:

select * from user where match

(name)

against

('a*' in boolean mode)

;

mysql索引型別介紹 mysql索引型別介紹

索引型別介紹 主鍵索引 primary key 要求關鍵字不能重複,也不能為null,同時增加主鍵約束 主鍵索引定義時,不能命名 唯一索引 unique index 要求關鍵字不能重複,同時增加唯一約束 普通索引 index 對關鍵字沒有要求 全文索引 fulltext key 關鍵字的 不是所有欄...

mysql索引型別介紹 mysql索引型別介紹

b 樹是多路平衡查詢樹,相對於平衡二叉樹,對父結點的直接子結點個數,不再僅限於2,可以指定m 自定義 這樣可以在樹的深度不大量增加的前提下,儲存更多的結點。b 樹是通常在檔案系統中使用。特點 a 樹的每個結點最多有m 自定義 子結點 b 若根結點不是葉子結點,則至少有兩個子結點 c 除根結點外的所有...

MySQL索引 索引型別

在mysql有兩種索引型別 hash b 樹 hash索引原理比較簡單就是利用了乙個hash表 說b 樹之前先要了解b 樹的資料結構。不廢話,先上圖。對b 樹做一些解釋,參考上圖。b 樹的資料都在葉子節點上 非葉子節點上的這些都是範圍。舉例 最上面的根節點上的資料是5,28,65代表的是它的三個子樹...