為什麼要創建索引?
在此本人也帶著相同的疑問,能夠解釋的僅僅是:為了減少數據庫查詢時所需要的速度。如果正常查詢和索引查詢所需時間相差很多倍時我們自然是需要索引的了。
想要知道結果,只能等我學得更加深入一點咯。
創建索引
創建索引有三種方法:(1)在創建表時創建索引; (2)使用ALTER TABLE 語句創建索引;(3)使用CREATE INDEX語句創建索引。
創建索引的類型有:普通索引(INDEX),唯一索引(UNIQUE INDEX),全文索引(FULLTEXT INDEX),空間索引(SPATIAL INDEX);其中全文索引,空間索引必須在MyISAM存儲引擎下創建,且全文索引必須在數據類型為:CHAR、VARCHAR和TEXT的列上建立。
下面進行舉例:
一、創建表時創建索引
1、創建普通索引
CREATE TABLE T1 ( id INT NOT NULL, name CHAR(50) NULL, INDEX SingleIdx(name) )
創建普通索引的語句為INDEX [索引名](列名),其中列名可以為多個,即以多個關鍵字創建索引。
2、創建唯一索引
CREATE TABLE T1 ( id INT NOT NULL, name CHAR(30) NOT NULL, UNIQUE INDEX UniqIdx(id) )
創建唯一索引的語句為 UNIQUE INDEX [索引名](列名)
3、創建全文索引
CREATE TABLE T1 ( id INT NOT NULL, name CHAR(30) NOT NULL, age INT NOT NULL, info VARCHAR(255), FULLTEXT INDEX FullTxtIdx(info) ) ENGINE=MyISAM;
創建全文索引的語句為 FULLTEXT INDEX [索引名](列名), 其中存儲引擎為MyISAM
4、創建空間索引
CREATE TABLE T1 ( g GEOMETRY NOT NULL, SPATIAL INDEX spatLdx(g), ) ENGINE = MyISAM;
創建空間索引的語句為 FULLTEXT INDEX [索引名](列名), 其中存儲引擎為MyISAM
二、在已有表上創建索引
1、使用ALTER TABLE 語句創建索引
其中基本語法為: ALTER TABLE table_name ADD [索引種類] [索引名](字段);
如:
普通索引: ALTER TABLE book ADD INDEX BkNameIdx(bookname(30) );
唯一索引: ALTER TABLE book ADD UNIQUE INDEX UniqidIdx( bookId );
全文索引: ALTER TABLE book ADD FULLTEXT INDEX infoIdx( info);
空間索引: ALTER TABLE book ADD SPATIAL INDEX spatIdx( g );
2、使用CREATE INNDEX語句創建索引
其中基本語法為:
CREATE [索引種類] INDEX [索引名] ON [表名](字段名)
如:
普通索引: CREATE INDEX BkNameIDX ON book(bookname);
唯一索引: CREATE UNIQUE INDEX UniqidIdx ON book( bookId );
全文索引: CREATE FULLTEXT INDEX ON T1(info);
空間索引: CREATE SPATIAL INDEX spatIdx ON T1(g);
3、刪除索引
a、用ALTER TABLE 刪除:
ALTRER TABLE [表名] DROP INDEX [索引名];
b、用DROP INDEX刪除:
DROP INDEX [索引名] ON [表名];