MySQL基础之索引实战篇

在上一篇已经较为全面的讲述了索引的理论,现在进行实战操作。

在这里只列出常用索引类型的操作,关于更多的索引分类参看MySQL基础之索引理论篇

索引的创建

创建表的时候创建索引

普通索引
CREATE TABLE IF NOT EXISTS book
(
    bookid    INT NOT NULL,
    year_pub  YEAR NOT NULL,
    INDEX(year_pub)
);

上面语句是在year_pub字段上创建索引的

唯一索引

唯一索引只是多加了一个UNIQUE关键字,以下语句为在id字段上添加唯一索引并命名为UniqIdx

CREATE TABLE IF NOT EXISTS perso
(
    id    INT NOT NULL,
    name  CHAR(30) NOT NULL,
    UNIQUE INDEX UniqIdx(id)
);
组合索引
CREATE TABLE IF NOT EXISTS employee
(
    id    INT NOT NULL,
    name  CHAR(30) NOT NULL,
    age   INT NOT NULL,
    info  VARCHAR(255),
    INDEX MultiIdx(id, name, age)
);
全文索引

FULLTEXT全文索引可以用于全文搜索,但只有MyISAM存储引擎才支持,并且必须为CHAR、VARCHAR、TEXT列。

CREATE TABLE person
(
    id    INT NOT NULL,
    name  CHAR(30) NOT NULL,
    age   INT NOT NULL,
    info  VARCHAR(255),
    FULLTEXT INDEX FullTextIdx(info)
)ENGINE=MyISAM;

通过SHOW CREATE TABLE person;可查看创建表的过程。

在已经存在的表上创建索引

主要是通过ALTER TABLECREATE INDEX 语句进行的,推荐使用CREATE INDEX

普通索引

在perso表的name上建立名为PoNameIdx的普通索引

ALTER TABLE perso ADD INDEX PoNameIdx(name(30));
或者
CREATE INDEX PoNameIdx ON perso(name(30));

通过SHOW INDEX FROM perso;命令可以查看perso表当前的所有索引信息。

唯一索引
ALTER TABLE person ADD UNIQUE INDEX UniqNameIdx(name(30));
或者
CREATE UNIQUE INDEX UniqNameIdx ON person(name(30));
组合索引
ALTER TABLE person ADD INDEX PoAgeAndInfo(age, info);
或者
CREATE INDEX PoAgeAndInfo ON person(age, info);
全文索引

在这里需要注意,全文索引只能在存储引擎为MyISAM的表上使用。

ALTER TABLE person ADD FULLTEXT INDEX infoFTIdx(info);
或者
CREATE FULLTEXT INDEX infoFTIdx ON person(info);

如果该字段上已经存在了索引,可以先删除掉,然后再创建。

索引的删除

相较于索引的创建,删除索引的操作就比较简单很多了。

ALTER TABLE删除索引

遵循以下基本语法格式即可:
ALTER TABLE table_name DROP INDEX index_name
如:

ALTER TABLE person DROP INDEX infoFTIdx;
DROP INDEX删除索引

格式如下:
DROP INDEX index_name ON table_name
如:

DROP INDEX PoNameIdx ON perso;

结语

最后索引的实战大概就写这么多吧,这些都只是基本操作。实际开发中重点应该是如何选择索引。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值