1.1 索引的創建
1.1.1 主鍵索引的創建
創建表的時候創建主鍵索引
create?table?aaa(id?int?primary?key,name?varchar(64)?not?null?default?”);
先建表再建主鍵索引
create?table?aaa(id?int,name?varchar(64)?not?null?default?”); alter?table?aaa?add?primary?key(id);
主鍵索引的特點
1) 一個表最多只能有一個主鍵
2) 一個主鍵可以指向多列(復合主鍵)
3) 主鍵索引的效率是最高的,因此我們應該給id一般id是自增的
4) 主鍵索引的列是不能重復也不能為null
1.1.2 唯一索引的創建 直接在創建表的時候,指定某列或某幾列為唯一索引
mysql>?create?table?aaa(id?int,name?varchar(64)?not?null?default?”,email?varchar(64)?not?null?default?”?unique);
建表后再創建唯一索引
1)mysql>?create?unique?index?uni_name?on?aaa?(name); 2)mysql>?alter?table?aaa?add?unique?(email);
唯一索引的特點
1)一張表中可以有多個唯一索引
2)唯一索引不能重復,但是如果你沒有指定not null,唯一索引可以為null,而且可以有多個。
3)什么時候使用唯一索引,當某列數據不會重復時才能使用
4)唯一索引效率也很高,可以考慮優先使用
1.1.3 普通索引的創建 直接在創建表的時候,指定某列或某幾列為普通索引
mysql>?create?table?aaa(id?int,name?varchar(64)?not?null?default?”,namevarchar(64)?not?null?default?”?index);
建表后再創建普通索引
1)mysql>?create?index?ind_name?on?aaa?(name); 2)mysql>?alter?table?aaa?add?index(name);
特點
1) 一張表中可以有多個普通索引,一個普通索引也可以指向多列
2)普通索引列的數據可以重復
3)效率相對而言低
1.1.4 全文索引的創建
概述:全文索引是針對對文章,漢字,英文的索引,可以快速檢索到文章中的某個關鍵字
CREATE?TABLE?articles?( id?INT?UNSIGNED?AUTO_INCREMENT?NOT?NULL?PRIMARY?KEY, title?VARCHAR(200), body?TEXT, FULLTEXT?(title,body) )?engine?myisam?charset=utf8;
使用:select * from articles where match(body) against(‘天氣’);
特點
1)Mysql默認的全文索引,只對myisam存儲引擎生效
2)Mysql默認的全文索引,只支持英文
3)停止詞:對于特別普通的字母,不會建索引
4)匹配度:全文索引是按照一定概率進行匹配的。
如何解決mysql的全文索引不支持中文的問題
1) 使用mysql的一個中文檢索插件 mysqlcft
2) 可以使用專門的中文檢索引擎 sphinx 中文版(coreseek) 1.2 索引的查詢
desc表名
show keys from 表名G
show index from 表名G
show indexes from 表名G
1.3 索引的修改
先刪除載添加
1.4 索引的刪除
DROP INDEX 索引名ON 表;
ALTERTABLE 表名DROP INDEX 索引名;
1.6 索引的注意事項 較為頻繁的作為查詢條件的字段應該創建索引 唯一性太差的字段不適合單獨創建索引,即使頻繁作為查詢條件 更新非常頻繁的字段不適合創建索引 不會出現WHERE子句的字段不該創建索引.
以上就是mysql索引的使用的內容,更多相關內容請關注PHP中文網(www.php.cn)!