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;