Mysql 索引

分类

单列索引:一个索引只包含一列,一个表可以有多个单列索引
唯一索引:索引列的值必须唯一
复合索引:一个索引包含多个列
全文索引:只在 MYINAM 引擎才能使用,并且只能在 CHAR VARCHAR TEXT 类型字段上使用
空间索引:只在 MYINAM 引擎才能使用,并且只能在空间数据类型的字段添加索引

创建

CREATE INDEX 索引名 ON 表名 (字段1,字段2...)
-- 创建一个复合索引,字段是 name 和 gender
CREATE INDEX index_test ON students (name, gender)

注:主键为自动创建唯一索引,主键本身不能重复,所以主键就唯一不重复了;外键会自动创建一个单列索引

MEMORY 引擎用 HASH,INNODB 用 BTREE

删除

DROP INDEX 索引名 ON 表名

查看

SHOW INDEX FROM 表名

示例:

-- 如果 id 加了索引,速度会加快
SELECT * FROM students WHERE id = 1;
-- 如果 name 加了索引,速度会加快
SELECT * FROM students WHERE name = 'Marry';
-- 使用 EXPLAIN 可以查看该 sql 语句是否使用了索引,key 表示实际选用的索引
EXPLAIN SELECT * FROM students WHERE id = 1;

 

posted @ 2018-08-18 14:18  huanggy  阅读(140)  评论(0编辑  收藏  举报