本篇文章,我们将从索引基础开始,介绍什么是索引以及索引的几种类型,然后学习如何创建索引以及索引设计的基本原则。
本篇文章中用于测试索引创建的user表的结构如下:
索引(在 MySQL 中也叫“键key”)是存储引擎快速找到记录的一种数据结构 ——《高性能MySQL》
我们需要知道索引其实是一种数据结构,其功能是帮助我们快速匹配查找到需要的数据行,是数据库性能优化最常用的工具之一。其作用相当于超市里的导购员、书本里的目录。
可以使用 SHOW INDEX FROM table_name;
查看索引详情
主键索引 PRIMARY KEY
它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引。
注意:一个表只能有一个主键
唯一索引 UNIQUE
唯一索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。
创建唯一索引:
ALTER TABLE table_name ADD UNIQUE(column);
创建唯一组合索引:
ALTER TABLE table_name ADD UNIQUE(column1,column2);
普通索引 INDEX
最基本的索引,它没有任何限制。
创建普通索引:
ALTER TABLE table_name ADD INDEX index_name(column);
组合索引 INDEX
组合索引,即一个索引包含多个列。多用于避免回表查询。
创建组合索引:
ALTER TABLE table_name ADD INDEX index_name(column1,column2,column3);
全文索引 FULLTEXT
全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。
创建全文索引
ALTER TABLE table_name ADD FULLTEXT(column);
索引一经创建不能修改,如果要修改索引,只能删除重建。可以使用 DROP INDEX index_name ON table_name;
删除索引。