索引看著挺高大上的一個名字,說穿了就是我們書最新面的目錄。
假如你用新華字典來查找「張」這個漢字,不使用目錄的話,你可能要從新華字典的第一頁找到最後一頁,可能要花二個小時。字典越厚呢,你花的時間就越多。現在你使用目錄來找出「張」這個漢字,張的首字母是z,z開頭的漢字從900多頁開始,有了這條線索,你查找一個漢字可能只要一分鐘,由此可見索引的重要性。
索引用於快速找出在某個欄位中有一特定值的行。
不使用索引,MySQL必須從第1筆記錄開始然後讀取完整表直到找出相關的行。表越大,花費的時間越多。如果表中查詢的欄位有索引,MySQL能快速到達一個位置去搜尋到資料檔案的中間,沒有必要看所有資料。
當然索引也不易過多,索引越多寫入,修改的速度越慢。因為,寫入修改資料時,也要修改索引。
索引類型 | 功能說明 |
---|---|
普通索引 | 最基本的索引,它沒有任何限制 |
#唯一索引 | 某一行企用了唯一索引則不准許這一列的行資料中有重複的值。針對這一列的每一行資料都要求是唯一的 |
主鍵索引 | 它是一種特殊的唯一索引,不允許有空值。一般是在建表的時候同時建立主鍵索引,常用於使用者ID。類似於書中的頁碼 |
全文索引 | 對於需要全域搜尋的數據,進行全文索引 |
註:以下部份請學習完12.7後再學習。
#類型 | 詳細說明 |
---|---|
#基本語法 | |
#範例 ALTER TABLE money | ADD INDEX(|
範例解釋 |
類型 | |
---|---|
基本語法 | |
範例 #ALTER TABLE money ADD UNIQUE( | email|
範例解釋 |
類型 | 詳細說明 |
---|---|
基本語法 | alter table 表 add FULLTEXT(字段) |
#範例 | ALTER TABLE money ADD FULLTEXT(content ); |
範例解釋 | 為money表的content欄位增加唯一索引 |
詳細說明 | |
---|---|
#alter table 表 add PRIMARY KEY(字段) | |
ALTER TABLE | money ADD PRIMARY KEY( id); |
為money表的id欄位增加主鍵索引 |
#PRIMARY KEY(欄位)註:中括號中的索引名,代表可選。 整體範例如下:INDEX [索引名] (字段)
FULLTEXT [索引名] (字段)
UNIQUE[索引名] (字段)
CREATE TABLE下一節test
(
idINT NOT NULL ,
#usernameVARCHAR(20) NOT NULL ,
passwordINT NOT NULL ,
contentINT NOT NULL ,
PRIMARY KEY (
id),
INDEX pw (
password),
UNIQUE (
username),
FULLTEXT (
content)
) ENGINE = InnoDB;