定義:
索引是由數(shù)據(jù)庫表中一列或者多列組合而成,其作用是提高對表中數(shù)據(jù)的查詢速度正塌;
類似于圖書的目錄嘀略,方便快速定位恤溶,尋找指定的內容;
優(yōu)點:提高查詢數(shù)據(jù)的速度帜羊;
缺點:創(chuàng)建和維護索引的時間增加了咒程;
索引分類:
1、普通索引
這類索引可以創(chuàng)建在任何數(shù)據(jù)類型中讼育;
CREATE TABLE t_user1(id INT ,
? ? ? ? ? ? ? ? ? ? userName VARCHAR(20),
? ? ? ? ? ? ? ? ? ? PASSWORD VARCHAR(20),
? ? ? ? ? ? ? ? ? ? INDEX (userName)
? ? ? ? ? ? );
2帐姻、唯一性索引
使用UNIQUE參數(shù)可以設置,在創(chuàng)建唯一性索引時奶段,限制該索引的值必須是唯一的饥瓷;
CREATE TABLE t_user2(id INT ,
? ? ? ? ? ? ? ? ? ? userName VARCHAR(20),
? ? ? ? ? ? ? ? ? ? PASSWORD VARCHAR(20),
? ? ? ? ? ? ? ? ? ? UNIQUE INDEX index_userName(userName)
? ? ? ? ? ? );
3、全文索引
使用FULLTEXT參數(shù)可以設置痹籍,全文索引只能創(chuàng)建在CHAR呢铆,VARCHAR,TEXT類型的字段上蹲缠。主要作用是提高查詢較大字符串類型的速度棺克;只有MyISAM引擎支持該索引,Mysql默認引擎不支持线定;
4娜谊、單列索引
在表中可以給單個字段創(chuàng)建索引,單列索引可以是普通索引斤讥,也可以是唯一性索引纱皆,還可以是全文索引;
5周偎、多列索引
多列索引是在表的多個字段上創(chuàng)建一個索引抹剩;
CREATE TABLE t_user3(id INT ,
? ? ? ? ? ? ? ? ? ? userName VARCHAR(20),
? ? ? ? ? ? ? ? ? ? PASSWORD VARCHAR(20),
? ? ? ? ? ? ? ? ? ? INDEX index_userName_password(userName,PASSWORD)
? ? ? ? ? ? );
6、空間索引
使用SPATIAL參數(shù)可以設置空間索引蓉坎“木欤空間索引只能建立在空間數(shù)據(jù)類型上,這樣可以提高系統(tǒng)獲取空間數(shù)據(jù)的效率蛉艾;只有MyISAM引擎支持該索引钳踊,Mysql默認引擎不支持;
創(chuàng)建索引
1勿侯、創(chuàng)建表的時候創(chuàng)建索引
CREATE TABLE表名(屬性名 數(shù)據(jù)類型[完整性約束條件],
屬性名 數(shù)據(jù)類型[完整性約束條件],
....
屬性名 數(shù)據(jù)類型
[UNIQUE | FULLTEXT | SPATIAL ] INDEX| KEY
[別名] (屬性名1 [(長度)] [ASC | DESC])
);
2拓瞪、在已經(jīng)存在的表上創(chuàng)建索引
CREATE [ UNIQUE | FULLTEXT | SPATIAL ] INDEX索引名
ON表名(屬性名[(長度)] [ ASC | DESC]);
CREATE INDEX index_userName ON t_user4(userName);
CREATE UNIQUE INDEX index_userName ON t_user4(userName);
CREATE? INDEX index_userName_password ON t_user4(userName,PASSWORD);
3助琐、用ALTER TABLE語句來創(chuàng)建索引
ALTER TABLE表名ADD [ UNIQUE | FULLTEXT | SPATIAL ] INDEX
索引名(屬性名[(長度)] [ ASC | DESC])祭埂;
ALTER TABLE t_user5 ADD INDEX index_userName(userName);
ALTER TABLE t_user5 ADD UNIQUE INDEX index_userName(userName);
ALTER TABLE t_user5 ADD INDEX index_userName_password(userName,PASSWORD);
刪除索引
DROP INDEX索引名ON表名 ;
DROP INDEX index_userName ON t_user5;
DROP INDEX index_userName_password ON t_user5;