mysql 索引的基本操作匯總(四)。本站提示廣大學習愛好者:(mysql 索引的基本操作匯總(四))文章只能為提供參考,不一定能成為您想要的結果。以下是mysql 索引的基本操作匯總(四)正文
1.為何應用索引:
數據庫對象中的索引其實和書的目次相似,重要是為了進步從表中檢索數據的速度。因為數據存儲在數據庫表中,所以索引是創立在數據庫表對象上,由表中的一個字段或許多個字段生成的鍵構成,這些鍵存儲在數據構造(B-樹或許哈希表)中,經由過程MySQL可以疾速有用查找與鍵相干聯的字段。依據索引的存儲類型,可以將索引分為B型樹索引(BTREE)和哈希索引(HASH)。留意:InnoDB和MyISAM存儲引擎支撐BTREE類型索引,MEMORY存儲引擎支撐HASH類型的索引,默許為前者索引。
MySQL支撐6種索引,分離是通俗索引、獨一索引、全文索引、單列索引、多列索引、空間索引。
以下情形合適創立索引:
1. 常常被查詢的字段。即在WHERE子句中湧現的字段。
2. 在分組的字段,即在GROUP BY 子句中湧現的字段。
3. 存在依附關系的子表和父表之間的結合查詢,即主鍵或外鍵字段。
4. 設置獨一完全束縛的字段。
2.創立和檢查索引:
索引的操作包含創立索引、檢查索引、 刪除索引。所謂創立索引,就是在表的一個字段或多個字段上樹立索引,在MySQL中,可以平日三種方法來創立索引,創立表時創立索引、在曾經存在的表上創立索引、經由過程SQL語句ALTER TABLE創立索引。
2.1 創立和檢查通俗索引:
所謂通俗索引就是在創立索引時,不附加任何限制前提(獨一、非空等限制)。該類型的索引可以創立在任何類型的字段上。
2.1.1 創立表時創立通俗索引:
語法格局以下:
CREATE TABLE table_name( 屬性名 數據類型, 屬性名 數據類型, ...... 屬性名 數據類型, INDEX|KEY [索引名] (屬性名1 [(長度)] [ASC|DESC]) );
解釋:INDEX或許KEY參數用來指定字段為索引,“索引名”參數用來指定所創立索引的稱號,“屬性名1”參數用來指定索引所聯系關系的字段的稱號,“長度”參數用來指定索引的長度,“ASC|DESC”參數用來指定升序照樣降序。
留意:在創立索引時,可以指定索引的長度。這是由於分歧存儲引擎界說了表的最年夜索引數和最年夜索引長度。MySQL所支撐的存儲引擎對每一個表至多支撐16個索引,總索引長度至多256字節。
示例:
CREATE TABLE t_dept( deptno INT, dname VARCHAR(30), loc VARCHAR(40), INDEX index_deptno (deptno) );
解釋:
可以經由過程 SHOW CREATE TABLE t_dept \G 來檢查能否勝利創立了索引;
可以經由過程 EXPLAIN SELECT * FROM t_dept WHERE deptno=1\G;來校驗數據庫表中索引能否被應用。假如履行成果中的possible_keys和key字段處的值都為所創立的索引名index_deptno,則解釋該索引曾經存在,並且曾經開端啟用。
2.1.2 在曾經存在的表上創立通俗索引:
經由過程SQL語句CREATE INDEX完成,其語法情勢為:
CREATE INDEX 索引名
ON 表名 (屬性名 [(長度)] [ADC|DESC])
2.1.3 經由過程SQL語句ALTER TABLE 創立通俗索引:
語法情勢為:
ALTER TABLE table_name ADD INDEX|KEY 索引名 (屬性名 [(長度)] [ASC|DESC]);
2.2 創立和檢查獨一索引:
所謂獨一索引,就是在創立索引時,限制索引的值必需是獨一的。經由過程該類型的索引可以更快的查詢某筆記錄。在MySQL中,依據創立索引的方法,可以分為主動索引和手動索引兩種。
所謂主動索引,是指在數據庫內外設置完全性束縛時,該表會被體系主動創立索引。所謂手動索引,是指手動在表上創立索引。當設置表中的某個字段為主鍵或獨一完全性束縛時,體系就會主動創立聯系關系該字段的獨一索引。
2.2.1 創立表時創立獨一索引:
語法情勢為:
CREATE TABLE table_name( 屬性名 數據類型, 屬性名 數據類型, ...... 屬性名 數據類型, UNIQUE INDEX|KEY [索引名] (屬性名1 [(長度)] [ASC | DESC]) );
解釋:UNIQUE INDEX或許UNIQUE KEY表現創立獨一索引。
2.2.2 在曾經存在的表上創立獨一索引:
經由過程SQL語句CREATE UNIQUE INDEX來完成,語法情勢為:
CREATE UNIQUE INDEX 索引名
ON 表名 (屬性名 [(長度)] [ASC|DESC]);
2.2.3 經由過程SQL語句ALTER TABLE創立獨一索引:
語法情勢為:
ALTER TABLE table_name ADD UNIQUE INDEX|KEY 索引名 (屬性名 [(長度)] [ASC|DESC]);
2.3 創立和檢查全文索引:
全文索引重要聯系關系在數據類型為CHAR、VARCHAR和TEXT的字段上,以便能加倍疾速的查詢數據量較年夜的字符串類型的字段。MySQL只能在存儲引擎為MyISAM的數據庫表上創立全文引擎。默許情形下,全文引擎的搜刮履行方法為不辨別年夜小寫,假如全文引擎所聯系關系的字段為二進制數據類型,則以辨別年夜小寫的方法履行。
2.3.1 創立表時創立全文索引:
語法情勢為:
CREATE TABLE table_name ( 屬性名 數據類型, 屬性名 數據類型, ...... 屬性名 數據類型, FULLTEXT INDEX|KEY [索引名] (屬性名1 [(長度)] [ASC|DESC]) );
2.3.2 在曾經存在的表上創立全文索引:
語法情勢為:
CREATE FULLTEXT INDEX 索引名
ON 表名 (屬性名 [(長度)] [ASC|DESC]);
2.3.3 經由過程SQL語句ALTER TABLE 創立全文索引:
語法情勢為:
ALTER TABLE table_name
ADD FULLTEXT INDEX|KEY 索引名 (屬性名 [(長度)] [ASC|DESC]);
2.4 創立和檢查多列索引:
所謂多列索引,是指在創立索引時,所聯系關系的字段不是一個字段,而是多個字段。固然可以經由過程所聯系關系的字段停止查詢,然則只要查詢前提中應用了所聯系關系字段中的第一個字段,多列索引才會被應用。
2.4.1 創立表時創立多列索引:
語法情勢以下:
CREATE TABLE table_name( 屬性名 數據類型, 屬性名 數據類型, ...... 屬性名 數據類型, INDEX|KEY [索引名] (屬性名1 [(長度)] [ASC|DESC]), ...... (屬性名1 [(長度)] [ASC|DESC]) );
上述語句創立索引時,所聯系關系的字段至多年夜於一個字段。
2.4.2 在曾經存在的表上創立多列索引:
語法情勢為:
CREATE INDEX 索引名 ON 表名 ( 屬性名 [(長度)] [ASC|DESC], ...... 屬性名n [(長度)] [ASC|DESC] );
2.4.3 經由過程SQL語句ALTRE TABLE 創立多列索引:
語法情勢為:
ALTER TABLE table_name ADD INDEX|KEY 索引名(屬性名 [(長度)] [ASC|DESC],屬性名n [(長度)] [ASC|DESC]);
3. 刪除索引:
刪除索引的語法情勢:
DROP INDEX index_name ON table_name
4. 檢查索引:
檢查索引的語法情勢:
SHOW INDEX FROM table_name
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。