MySQL索引操作敕令小結。本站提示廣大學習愛好者:(MySQL索引操作敕令小結)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL索引操作敕令小結正文
創立索引
創立索引的語法是:
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
[USING index_type]
ON tbl_name (index_col_name,...)
index_col_name:
col_name [(length)] [ASC | DESC]
關於CHAR和VARCHAR列,只用一列的一部門便可創立索引。創立索引時,應用col_name(length)語法,對前綴編制索引。前綴包含每列值的前length個字符。BLOB和TEXT列也能夠編制索引,然則必需給出前綴長度。
此處展現的語句用於創立一個索引,索引應用列稱號的前10個字符。
CREATE INDEX part_of_name ON customer (name(10));
由於多半稱號的前10個字符平日分歧,所以此索引不會比應用列的全名創立的索引速度慢許多。別的,應用列的一部門創立索引可使索引文件年夜年夜減小,從而節儉了年夜量的磁盤空間,有能夠進步INSERT操作的速度。
前綴最長為255字節。關於MyISAM和InnoDB表,前綴最長為1000字節。留意前綴的限長以字節計,而CREATE INDEX語句中的前綴長度指的是字符的數量。關於應用多字節字符集的列,在指定列的前綴長度時,要斟酌這一點。
在MySQL中:
·只要當您正在應用MyISAM, InnoDB或BDB表類型時,您可以向有NULL值的列中添加索引。
·只要當您正在應用MyISAM, BDB或InnoDB表類型時,您可以向BLOB或TEXT列中添加索引。
一個index_col_name規約可以以ASC或DESC為開頭。這些症結詞未來可以擴大,用於指定遞增或遞加索引值存儲。今朝,這些症結詞被剖析,然則被疏忽;索引值均以遞增次序存儲。
部門貯存引擎許可在創立索引時指定索引類型。index_type指定語句的語法是USING type_name。分歧的貯存引擎所支撐的type_name值已顯示鄙人表中。假如列有多個索引類型,當沒有指定index_type時,第一個類型是默許值。
存儲引擎
許可的索引類型
MyISAM
BTREE
InnoDB
BTREE
MEMORY/HEAP
HASH, BTREE
示例:
CREATE TABLE lookup (id INT) ENGINE = MEMORY;
CREATE INDEX id_index USING BTREE ON lookup (id);
TYPE type_name可以作為USING type_name的同義詞,用於指定索引類型。然則,USING是首選的格局。別的,在索引規約語法中,位於索引類型後面的索引稱號不克不及應用TYPE。這是由於,與USING分歧,TYPE不是保存詞,是以會被以為是一個索引稱號。
假如您指定的索引類型在給定的貯存引擎中不正當,然則有其它的索引類型合適引擎應用,而且不會影響查詢功效,則引擎應應用此類型。
FULLTEXT索引只能對CHAR, VARCHAR和TEXT列編制索引,而且只能在MyISAM表中編制。
SPATIAL索引只能對空間列編制索引,而且只能在MyISAM表中編制。
應用alter的辦法創立索引
alter table table_name add index index_name (column_list) ;
alter table table_name add unique (column_list) ;
alter table table_name add primary key (column_list) ;
查詢索引
SHOW INDEX FROM table_name;
刪除索引
drop index index_name on table_name ;
alter table table_name drop index index_name ;
alter table table_name drop primary key ;
個中,在後面的兩條語句中,都刪除table_name中的索引index_name。而在最初一條語句中,只在刪除PRIMARY KEY索引中應用,由於一個表只能夠有一個PRIMARY KEY索引,是以不須要指定索引名。