程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql 索引的基本操作匯總(四)

mysql 索引的基本操作匯總(四)

編輯:MySQL綜合教程

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

以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved