索引的類型:
普通索引:這是最基本的索引類型,沒唯一性之類的限制。
唯一性索引:和普通索引基本相同,但所有的索引列只能出現一次,保持唯一性。
主鍵:主鍵是一種唯一索引,但必須指定為 "PRIMARY?KEY" 。
全文索引:全文索引的索引類型為 FULLTEXT 。全文索引可以在 VARCHAR 或者 TEXT 類型的列上創建。
索引的操作
使用 ALTER?TABLE 語句創建索引。
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)?;
使用 CREATE?INDEX 語句對表增加索引。
create?index?index_name?on?table_name?(column_list)?;
create?unique?index?index_name?on?table_name?(column_list)?;
刪除索引
drop?index?index_name?on?table_name?;
alter?table?table_name?drop?index?index_name?;
alter?table?table_name?drop?primary?key?;
查看索引
show?index?from?table_name;
如何使用索引
1 、在經常進行連接的字段,建立索引
2 、在排序或分組的列上建立索引
3 、在條件表達式中建立所因( where ),情況有兩種
不同值較多的列上使用索引,
不同值較少的列上不適用索引
4 、待排序的列有多個,可以在這些列上建立復合索引
5 、可以建立短索引,例如:
???alter?table?table_name?add?index?index_name(column_list(length))
???alter?table?test?add?index?ab(`a`(3));
6 、 join 中出現的列需要建立索引
注意事項 :
1 、索引不會包含有 null 值的列
2 、 MySQL 查詢只使用一個索引,因此如果 where 子句中已經使用了索引的話,那么 order?by 中的列是不會使用索引的。因此數據 ?
庫默認排序可以符合要求的情況下不要使用排序操作;盡量不要包含多列的排序,如果需要最好給這些列創建復合索引。
3 、不要在列上進行運算
4 、以通配符 % 和 _ 開頭作查詢時, mysql 不會使用索引。例如:
會使用索引 :SELECT?*?FROM?mytable?WHERE?username?like?'admin%'
不會使用索引 :SELECT?*?FROM?mytable?WHERE?username?like?'%admin'
組合索引
組合索引的最左優先原則,組合索引的第一個字段必須出現在查詢組句中,這個索引才會被用到。
如果有一個組合索引 (col_a,col_b,col_c)
下面的情況都會用到這個索引:
col_a?=?"some?value";
col_a?=?"some?value"?and?col_b?=?"some?value";
col_a?=?"some?value"?and?col_b?=?"some?value"?and?col_c?=?"some?value";
col_b?=?"some?value"?and?col_a?=?"some?value"?and?col_c?=?"some?value";
對于最后一條語句, mysql 會自動優化成第三條的樣子 ~~ 。
下面的情況就不會用到索引:
col_b?=?"aaaaaa";
col_b?=?"aaaa"?and?col_c?=?"cccccc";
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
