Mysql常見索引有:主鍵索引、唯一索引、普通索引、全文索引、組合索引(聯合索引,多列索引)
一、建立的方法介紹
1、PRIMARY KEY(主鍵索引) 的建立方法
ALTER TABLE 表明 ADD PRIMARY KEY ( 列名);
一般都是在建立表的時候自己就設置好了 自增長不為空的主鍵默認id
2、UNIQUE(唯一索引) 的建立方法
ALTER TABLE 表明 ?ADD UNIQUE (列名);
3、INDEX(普通索引) ?的建立方法
?ALTER ?TABLE ?表明 ? ADD ?INDEX ? 索引名 ( 列名 ) ?//使用時候直接把文字替換為你的表名和列名就好
4、FULLTEXT(全文索引) 的建立方法
ALTER TABLE `table_name` ADD FULLTEXT ( `column` )
5、組合索引 的建立方法? 和 (聯合索引,多列索引)都是一個意思?
?ALTER TABLE ?`table_name` ?ADD INDEX ?index_name ( `column1`, `column2`, `column3` )
//==============================================================
二、各索引的使用方法
1、【主鍵索引】就不介紹了 ?都知道 ? 具有唯一性和自增長性,查詢效率最快
2、【唯一索引】 與 ?"普通索引"類似,不同的就是:索引列的值必須唯一,但允許有空值。 如果想限制用戶添加數據時候防止重復添加就可以 將 判斷的字段設置為唯一索引來達到目的。
3、【普通索引】在查詢中經常出現,特別百萬級別或千萬級別的數據量,使用普通索引會有特別顯著的效果
比如:單個where ?條件的字段查詢 就可以將條件字段設置為普通索引來提高查詢效率。
SELECT*FRO ?表明 ?WHREE ?username="username";
4、【組合索引】經常在多個where條件的查詢語句中出現。
SELECT*FROM? 表明? WHREE? username="username" AND? password="password"
那么username和password就可以設置為兩列的組合索引,組合索引遵循”最左前綴“原則。索引列順序和查詢列同步效果才能體現,不要覺得誰在前誰在后無所謂,為了好的編程習慣和兼容還是同步順序的好。
加深組合索引的使用方法:
我們限制建立三列組合索引且順序是:ALTER TABLE? `table_name`? ADD INDEX? index_name ( `column1`, `column2`, `column3` )
那么我們查詢語句中能夠讓組合索引起效果的查詢方法是:
正確方法如下:
<1> ?SELECT*FROM? `table_name`? WHREE? column1="column1" AND? column2="column2"? AND? column3="column3";
<2> SELECT*FROM? `table_name`? WHREE? column1="column1" AND? column2="column2" ?
<3> SELECT*FROM? `table_name`? WHREE? column1="column1" ?
錯誤如下:
<1>? SELECT*FROM? `table_name`? WHREE? column2="column2"? AND? column3="column3" ? and ?column1="column1";
<2> SELECT*FROM? `table_name`? WHREE? column2="column2" AND? column3="column3"
<3> SELECT*FROM? `table_name`? WHREE? column2="column2"? 或 SELECT*FROM? `table_name`? WHREE? column3="column3" 都是錯誤的索引調用方式,且組合索引不會起效果,也就是說沒有起到優化的作用。
在這個時候我們就可以多建立一個普通索引或組合索引來配合多條件的查詢語句。
SELECT*FROM? table_name? WHERE? ? 字段? like? '關鍵詞%'
會使用索引,而
SELECT ?* FROM? table_name? WHERE? ? 字段? like? '%關鍵詞' 不會使用索引
三、索引的不足之處
上面說了那么多索引的好話,它真的有像傳說中那么優秀么?當然會有缺點了。
1.雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,如對表進行INSERT、UPDATE和DELETE。因為更新表時,MySQL不僅要保存數據,還要保存一下索引文件
2.建立索引會占用磁盤空間的索引文件。一般情況這個問題不太嚴重,但如果你在一個大表上創建了多種組合索引,索引文件的會膨脹很快。