標籤:
建立索引:
MySql建立索引的文法如下:
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON table_name (index_col_name,...)
其中對應的文法變數資訊如下:
[UNIQUE|FULLTEXT|SPATIAL]:中括弧中的三個關鍵字表示建立的索引類型,他們分別表示唯一索引、全文索引、空間索引三種不同的索引類型。如果我們不指定任何關鍵字,則預設為普通索引。
index_name:表示索引的名字,由使用者自行定義,以便以後對該索引進行修改管理操作。
index_type:表示索引的具體實現方式,在MySql中,有兩種不同形式的索引----BTREE索引和HASH索引。在儲存引擎為MYISAM和INNODB的表中只能使用BTREE,其預設值就是BTREE;在儲存引擎為MEMORY或者HEAP的表中可以使用HASH和BTREE兩種類型的索引,其預設值是HASH。
index_col_name:表示需要建立索引的欄位名稱,我們還可以針對多個欄位建立複合索引,只需要在多個欄位名稱之間以英文逗號隔開即可。
此外,對於char或varchar類型的欄位,我們還可以只使用欄位內容前面的一部分來建立索引,只需要在對應的欄位後面加上形如(length)的指令即可,表示只需要使用欄位內容前面的length個字元來建立索引。
CREATE INDEX idx_user_username ON user (username(6));
由於多數欄位的前6個字元通常不同,所以此索引不會比使用欄位的全部內容建立的索引速度慢很多。另外,使用欄位的一部分建立索引可以使索引檔案大大減小,從而節省了大量的磁碟空間,有可能提高INSERT操作的速度。
必須注意的是:在MySql中,對已TEXT和BLOG這種大資料類型的欄位,必須給出前置長度(length)才能成功建立索引。
上述建立索引的文法還具有以下變體:
ALTER TABLE table_name ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name (index_col_name,...) [USING index_type]
在MySql中,只有當表的儲存引擎為MYISAM,INNODB和BDB類型時,你才能向具有NULL值的列或者資料類型為TEXT或BLOB的列添加索引。
刪除索引:
在MySql中刪除索引的方法非常簡單,其完整文法如下:
ALTER TABLE table_name DROP INDEX index_name;
修改索引:
在MySql中並沒有提供修改索引的直接指令,一般情況下,我們先刪除原索引,再根據需要建立一個同名的索引,從而變相地實現修改索引的操作。
//先刪除索引
ALTER TABLE table_name DROP INDEX index_name;
//建立同名的索引
CREATE INDEX index_name ON table_name (index_col_name,...);
查看索引:
在MySql中,要查看某個資料庫表中的索引頁非常簡單,只需要使用以下兩個命令中的任意一種即可:
SHOW INDEX FROM table_name [FROM db_name];
SHOW INDEX FROM [db_name.]table_name;
MySQL索引操作命令詳解