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/