mysql索引操作)

來源:互聯網
上載者:User
建立索引

建立索引的文法是:

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索引,因此不需要指定索引名。

參考 http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#create-index

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.