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