在上一篇已经较为全面的讲述了索引的理论,现在进行实战操作。
在这里只列出常用索引类型的操作,关于更多的索引分类参看MySQL基础之索引理论篇
索引的创建
创建表的时候创建索引
普通索引
1 | CREATE TABLE IF NOT EXISTS book |
上面语句是在year_pub字段上创建索引的
唯一索引
唯一索引只是多加了一个UNIQUE关键字,以下语句为在id字段上添加唯一索引并命名为UniqIdx1
2
3
4
5
6CREATE TABLE IF NOT EXISTS perso
(
id INT NOT NULL,
name CHAR(30) NOT NULL,
UNIQUE INDEX UniqIdx(id)
);
组合索引
1 | CREATE TABLE IF NOT EXISTS employee |
全文索引
FULLTEXT全文索引可以用于全文搜索,但只有MyISAM存储引擎才支持,并且必须为CHAR、VARCHAR、TEXT列。
1 | CREATE TABLE person |
通过SHOW CREATE TABLE person;
可查看创建表的过程。
在已经存在的表上创建索引
主要是通过ALTER TABLE
和 CREATE INDEX
语句进行的,推荐使用CREATE INDEX
普通索引
在perso表的name上建立名为PoNameIdx的普通索引
1 | ALTER TABLE perso ADD INDEX PoNameIdx(name(30)); |
通过SHOW INDEX FROM perso;
命令可以查看perso表当前的所有索引信息。
唯一索引
1 | ALTER TABLE person ADD UNIQUE INDEX UniqNameIdx(name(30)); |
组合索引
1 | ALTER TABLE person ADD INDEX PoAgeAndInfo(age, info); |
全文索引
在这里需要注意,全文索引只能在存储引擎为MyISAM的表上使用。1
2
3ALTER TABLE person ADD FULLTEXT INDEX infoFTIdx(info);
或者
CREATE FULLTEXT INDEX infoFTIdx ON person(info);
如果该字段上已经存在了索引,可以先删除掉,然后再创建。
索引的删除
相较于索引的创建,删除索引的操作就比较简单很多了。
ALTER TABLE删除索引
遵循以下基本语法格式即可:ALTER TABLE table_name DROP INDEX index_name
如:1
ALTER TABLE person DROP INDEX infoFTIdx;
DROP INDEX删除索引
格式如下:DROP INDEX index_name ON table_name
如:
1 | DROP INDEX PoNameIdx ON perso; |
结语
最后索引的实战大概就写这么多吧,这些都只是基本操作。实际开发中重点应该是如何选择索引。