如果把我們的數據庫信息當做一本書或者一個字典,那麼索引可以理解為它的目錄,如果我們創建一個優秀的目錄,那麼我們檢索信息就會快得多,如果我們創建一個渣渣索引,也有可能拖垮整個系統。
索引我們分為四類,通常分為四大類型,即主鍵索引、全文索引、唯一索引、普通索引,這是按照索引的類型來分的。所謂主鍵索引,那就是當我們創建一張表的時候,如果我們指定了一個主鍵,那麼它就自動成為主鍵索引,比如SQL語句如下(這裡的id就自動成為了主鍵索引):
create table xin(id int unsigned primary key auto_increment, name varchar(32) not null default '');
一般來說,對於普通索引,我們可以在創建表的時候指定索引,也可以在創建表的時候指定索引,下面我們以縣創建表然後再添加索引為例,看代碼:
#創建一個數據表 create table xin(id int unsigned, name varchar(32) not null default ''); #在該表上創建一個索引 create index xiaohei on xin(id);這裡說一下把,這裡的添加索引的格式是:create index 索引名 on 表名(列名);
然後說一下全文索引,所謂全文索引,主要是從數據庫中搜索字符串信息的,比如我們逛很多論壇,它的搜索功能就特別需要全文索引了,我們的全文索引主要針對文件、文本的索引,而且目前來說,全文索引依然只對引擎MyIASM有效,咱們指定一下表的引擎就可以了,看下面代碼:
#創建一個文章表,並且設置索引 create table article(id int primary key, title varchar(200) not null , body text, fulltext(title,body) ) engine = myisam ;那麼我們使用該全文索引的時候應該使用使用match和against,看下面操作:
#按照這種方式我們可以快速的使用全文索引來查找內容 select * from article where match(title,body) against ('xin');但是mysql自帶的這個全文索引並不支持中文,我們可以考慮使用sphinx來支持中文,這裡先不介紹。
對於unique索引,也就是唯一索引,我們直接在在列級完整性約束後面加一個unique即可,這裡需要注意的是被unique修飾的字段是可以為空的,而且是可以有多個為空的,當然也可以像創建一個普通index那樣去創建,但是此時的index必須在前面加上一個unique修飾符。
對於索引的刪除,可以使用【alter table 表名 drop index 索引名】,但是我感覺我們使用【drop index 索引名 on 表名】更好一些。
那麼我們怎麼看一個表的索引呢,我們可以用【desc 表名】的方式來查看索引,我們還可以使用【show index from 表名】或者【show index from 表名】來查看一個表的索引。