索引设计原则
对查询频次较高,且数据量比较大的表建立索引
使用唯一索引,区分度越高,使用索引的效率越高
索引可以有效的提升查询数据的效率,但索引数量不是多多益善,索引越多,维护索引的代价自然也就水涨船高。对于插入、更新、删除等DML操作比较频繁的表来说,索引过多,会引入相当高的维护代5,降低DML操作的效率,增加相应操作的时间消耗。另外索引过多的话,MySQL也会犯选择困难病,虽然最终仍然会找到一个可用的索引,但无疑提高了选择的代价
使用短索引,索引创建之后也是使用硬盘来存储的所以使用名字较短的索引较好
1) 单列索引 :即一个索引只包含单个列,一个表可以有多个单列索引
单列索引的值不允许重复但是可以为null,当值为null时添加的值可以重复都为空值
-- 给city表的city_name一个唯一索引
create UNIQUE index sy_city_name on city(city_name)
insert into `city` (`city_id`, `city_name`, `country_id`) values(1,'上海',1);
-- 查看索引
SHOW INDEX FROM city
2) 唯一索引 :索引列的值必须唯一,但允许有空值
主键索引 要求唯一 非空
使用时和单列索引差不多
3) 复合索引 :即一个索引包含多个列
索引中有多个列,遵循最左法则调用时从左到右依次进行调用
查看索引
show index form 表名
删除索引
drop index 索引名 on 索引所在的表名