MYSQL中的普通索引,主健,唯一,全文索引區別

weixin_33912246發表於2017-07-07

MYSQL索引用來快速地尋找那些具有特定值的記錄,所有MySQL索引都以B-樹的形式儲存。如果沒有索引,執行查詢時MySQL必須從第一個記錄 開始掃描整個表的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就越高。如果作為搜尋條件的列上已經建立了索引,MySQL無 需掃描任何記錄即可迅速得到目標記錄所在的位置。如果表有1000個記錄,通過索引查詢記錄至少要比順序掃描記錄快100倍。


總體分析

PRIMARY, INDEX, UNIQUE 這3種是一類

PRIMARY 主鍵。 就是 唯一 且 不能為空。

INDEX 索引,普通的

UNIQUE 唯一索引。 不允許有重複。

FULLTEXT 是全文索引,用於在一篇文章中,檢索文字資訊的。

MYSQL的索引型別:PRIMARY, INDEX,UNIQUE,FULLTEXT,SPAIAL 有什麼區別?各適用於什麼場合?

舉個例子來說,比如你在為某商場做一個會員卡的系統。
這個系統有一個會員表
有下列欄位:
會員編號 INT
會員姓名 VARCHAR(10)
會員身份證號碼 VARCHAR(18)
會員電話 VARCHAR(10)
會員住址 VARCHAR(50)
會員備註資訊 TEXT

那麼這個 會員編號,作為主鍵,使用 PRIMARY
會員姓名 如果要建索引的話,那麼就是普通的 INDEX
會員身份證號碼 如果要建索引的話,那麼可以選擇 UNIQUE (唯一的,不允許重複)
會員備註資訊 , 如果需要建索引的話,可以選擇 FULLTEXT,全文搜尋。

不過 FULLTEXT 用於搜尋很長一篇文章的時候,效果最好。
用在比較短的文字,如果就一兩行字的,普通的 INDEX 也可以。

建立索引使用說明

普通索引

這是最基本的索引型別,而且它沒有唯一性之類的限制。

建立索引,例如CREATE INDEX <索引的名字> ON tablename (列的列表);
修改表,例如ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表);
建立表的時候指定索引,例如CREATE TABLE tablename ( [...], INDEX [索引的名字] (列的列表) );


唯一性索引

這種索引和前面的“普通索引”基本相同,但有一個區別:索引列的所有值都只能出現一次,即必須唯一。


MYSQL主鍵:

MYSQL主鍵是一種唯一性索引,但它必須指定為“PRIMARY KEY”。

例如“CREATE TABLE tablename ( [...], PRIMARY KEY (列的列表) ); ”。但是,我們也可以通過修改表的方式加入主鍵,例如“ALTER TABLE tablename ADD PRIMARY KEY (列的列表); ”。每個表只能有一個主鍵。

全文索引

MySQL從3.23.23版開始支援全文索引和全文檢索。在MySQL中,全文索引的索引型別為FULLTEXT。全文索引可以在VARCHAR或者TEXT型別的列上建立。它可以通過CREATE TABLE命令建立,也可以通過ALTER TABLE或CREATE INDEX命令建立。對於大規模的資料集,通過ALTER TABLE(或者CREATE INDEX)命令建立全文索引要比把記錄插入帶有全文索引的空表更快。

單列索引與多列索引

建立索引,例如CREATE UNIQUE INDEX <索引的名字> ON tablename (列的列表);
修改表,例如ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表);
建立表的時候指定索引,例如CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (列的列表)
);

詳細介紹請檢視全文:https://cnblogs.com/qianzf/

原文部落格的連結地址:https://cnblogs.com/qzf/

相關文章