索引
什么是索引
- 索引是用于快速找出在某个列中有一特定值的行。
- 不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行。表越大,花费的时间越多。如果表中查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要看所有数据。
- 当然索引也不易过多,索引越多写入,修改的速度越慢。因为,写入修改数据时,也要修改索引。
MySQL 的索引类型
索引类型 |
功能说明 |
普通索引 |
最基本的索引,它没有任何限制 |
唯一索引 |
某一行企用了唯一索引则不准许这一列的行数据中有重复的值。针对这一列的每一行数据都要求是唯一的 |
主键索引 |
它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引,常用于用户ID。类似于书中的页码 |
全文索引 |
对于需要全局搜索的数据,进行全文索引。一般用于检索检索文本信息的 |
类型 |
详细说明 |
基本语法 |
alter table 表 add index(字段) |
示例 |
ALTER TABLE money ADD INDEX(username); |
示例解释 |
为money表的username字段增加索引 |
类型 |
详细说明 |
基本语法 |
alter table 表 add UNIQUE(字段) |
示例 |
ALTER TABLE money ADD UNIQUE(email); |
示例解释 |
为money表的email字段增加唯一索引 |
类型 |
详细说明 |
基本语法 |
alter table 表 add PRIMARY KEY(字段) |
示例 |
ALTER TABLE money ADD PRIMARY KEY(id); |
示例解释 |
为money表的id字段增加主键索引 |
|
类型 |
详细说明 |
基本语法 |
alter table 表 add FULLTEXT(字段) |
示例 |
ALTER TABLE money ADD FULLTEXT(content); |
示例解释 |
为money表的content字段增加唯一索引 |
删除索引
- Alter table 表 drop index 索引名;
检查索引是否引用
- mysql在使用like查询的时候只有使用后面的%时,才会使用到索引。
EXPLAIN SELECT * FROM `user` WHERE username LIKE 't_%';
引擎
- MySQL5.6以前的版本:
- InnoDB:MySQL默认引擎,支持事务
- MyISAM:不支持事务,支持全文索引
- MySQL5.6以后的版本: