可以使用專門用于創(chuàng)建索引的 CREATE INDEX 語句在一個已有的表上創(chuàng)建索引,但該語句不能創(chuàng)建主鍵。
CREATE INDEX 索引名 ON 表名 (列名 [長度] [ASC|DESC]) <索引名>:指定索引名。一個表可以創(chuàng)建多個索引,但每個索引在該表中的名稱是唯一的。 <表名>:指定要創(chuàng)建索引的表名。 <列名>:指定要創(chuàng)建索引的列名。通常可以考慮將查詢語句中在 JOIN 子句和 WHERE 子句里經(jīng)常出現(xiàn)的列作為索引列。 <長度>:可選項。指定使用列前的 length 個字符來創(chuàng)建索引。使用列的一部分創(chuàng)建索引有利于減小索引文件的大小,節(jié)省索引列所占的空間。在某些情況下,只能對列的前綴進行索引。索引列的長度有一個最大上限 255 個字節(jié)(MyISAM 和 InnoDB 表的最大上限為 1000 個字節(jié)),如果索引列的長度超過了這個上限,就只能用列的前綴進行索引。另外,BLOB 或 TEXT 類型的列也必須使用前綴索引。 ASC|DESC:可選項。ASC指定索引按照升序來排列,DESC指定索引按照降序來排列,默認為ASC。 例如,要為列c4添加新索引,請使用以下語句:
CREATE INDEX idx_c4 ON t(c4); 默認情況下,如果未指定索引類型,MySQL將創(chuàng)建B-Tree索引。
index關鍵字查看索引
SHOW INDEX FROM 表名 [FROM 數(shù)據(jù)庫名] 語法說明如下:
<表名>:指定需要查看索引的數(shù)據(jù)表名。 <數(shù)據(jù)庫名>:指定需要查看索引的數(shù)據(jù)表所在的數(shù)據(jù)庫,可省略。比如,SHOW INDEX FROM student FROM test; 語句表示查看 test 數(shù)據(jù)庫中 student 數(shù)據(jù)表的索引。 示例:
mysql> SHOW INDEX FROM tb_stu_info2/G *************************** 1. row *************************** Table: tb_stu_info2 Non_unique: 0 Key_name: height Seq_in_index: 1 Column_name: height Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: YES Index_type: BTREE Comment: Index_comment: 1 row in set (0.03 sec) 其中各主要參數(shù)說明如下: