程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 辛星讓mysql跑得更快第二節之索引上部分

辛星讓mysql跑得更快第二節之索引上部分

編輯:MySQL綜合教程

辛星讓mysql跑得更快第二節之索引上部分


如果把我們的數據庫信息當做一本書或者一個字典,那麼索引可以理解為它的目錄,如果我們創建一個優秀的目錄,那麼我們檢索信息就會快得多,如果我們創建一個渣渣索引,也有可能拖垮整個系統。

索引我們分為四類,通常分為四大類型,即主鍵索引、全文索引、唯一索引、普通索引,這是按照索引的類型來分的。所謂主鍵索引,那就是當我們創建一張表的時候,如果我們指定了一個主鍵,那麼它就自動成為主鍵索引,比如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 表名】來查看一個表的索引。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved