mysql數據庫的經常使用操做-索引

 

索引mysql

MySQL索引的創建對於Mysql的搞笑運行時很重要的,索引能夠大大提升MySQL的檢索速度。sql

打個比方,若是合理的設計且使用索引的MySQL是一輛蘭博基尼的話,那麼沒有設計和使用索引的MySQL就是一我的力三輪車。spa

索引分單列索引和組合索引。單列索引,即一個索引只包含單個列,一個表能夠有多個單列索引,但這不是組合索引。組合索引,即一個索包含多個列。設計

建立索引時,你須要確保該索引是應用在 SQL 查詢語句的條件(通常做爲 WHERE 子句的條件)。 code

實際上,索引也是一張表,該表保存了主鍵與索引字段,並指向實體表的記錄。blog

上面都在說使用索引的好處,但過多的使用索引將會形成濫用。所以索引也會有它的缺點:雖然索引大大提升了查詢速度,同時卻會下降更新表的速度,如對錶進行INSERT、UPDATE和DELETE。由於更新表時,MySQL不只要保存數據,還要保存一下索引文件。創建索引會佔用磁盤空間的索引文件。索引

普通索引

建立索引table

這是最基本的索引,它沒有任何限制。它有如下幾種建立方式:class

1 CREATE INDEX indexName ON mytable(username(length))

 

若是是CHAR,VARCHAR類型,length能夠小於字段實際長度;若是是BLOB和TEXT類型,必須指定 length。test

 修改表結構

1 ALTER mytable ADD INDEX [indexName] ON (username(length))

 

建立表的時候直接指定

1 CREATE TABLE mytable( 2 3 ID INT NOT NULL, 4 5 username VARCHAR(16) NOT NULL, 6 7 INDEX [indexName] (username(length)) 8 9 ); 

 

刪除索引的語法

1 DROP INDEX [indexName] ON mytable; 

 

惟一索引

它與前面的普通索引相似,不一樣的就是:索引列的值必須惟一,但容許有空值。若是是組合索引,則列值的組合必須惟一。它有如下幾種建立方式:

建立索引

 1 建立索引  2 CREATEUNIQUEINDEXindexName ONmytable(username(length))  3  4  5 修改表結構  6 ALTERmytable ADDUNIQUE[indexName] ON(username(length))  7  8  9 建立表的時候直接指定 10 CREATETABLEmytable( 11 12 ID INTNOTNULL, 13 14 username VARCHAR(16) NOTNULL, 15 16 UNIQUE[indexName] (username(length)) 17 18 ); 

 

使用ALTER 命令添加和刪除索引

 1 有四種方式來添加數據表的索引:  2 ALTERTABLEtbl_name ADDPRIMARYKEY(column_list): 該語句添加一個主鍵,這意味着索引值必須是惟一的,且不能爲NULL。  3 ALTERTABLEtbl_name ADDUNIQUEindex_name (column_list): 這條語句建立索引的值必須是惟一的(除了NULL外,NULL可能會出現屢次)。  4 ALTERTABLEtbl_name ADDINDEXindex_name (column_list): 添加普通索引,索引值可出現屢次。  5 ALTERTABLEtbl_name ADDFULLTEXT index_name (column_list):該語句指定了索引爲 FULLTEXT ,用於全文索引。  6  7  8 如下實例爲在表中添加索引。  9 mysql> ALTERTABLEtestalter_tbl ADDINDEX(c); 10 你還能夠在 ALTER命令中使用 DROP子句來刪除索引。嘗試如下實例刪除索引: 11 mysql> ALTERTABLEtestalter_tbl DROPINDEX(c);

 

使用 ALTER 命令添加和刪除主鍵

1 主鍵只能做用於一個列上,添加主鍵索引時,你須要確保該主鍵默認不爲空(NOTNULL)。實例以下: 2 mysql> ALTERTABLEtestalter_tbl MODIFYi INTNOTNULL; 3 mysql> ALTERTABLEtestalter_tbl ADDPRIMARYKEY(i); 4 5 你也可使用 ALTER命令刪除主鍵: 6 mysql> ALTERTABLEtestalter_tbl DROPPRIMARYKEY; 7 刪除指定時只需指定PRIMARYKEY,但在刪除索引時,你必須知道索引名。

 

顯示索引信息

mysql> SHOW INDEX FROM table_name\G 
相關文章
相關標籤/搜索