管理索引相关语句
查看索引:
show index from [table_name];
创建索引:
alter table [tablename] add index [indexname] (keyname);
alter table [tablename] add fulltext [indexname] (keyname);
删除索引:
alter table [tablename] drop index [indexname];
mysql的索引有2种:
btree 和hash,但是hash是innoDB内部使用的索引,用户不能创建。
索引按功能划分:
普通索引:单纯为了提高查询效率,没别的特点。
全文索引:用于对text文本型字段的索引
唯一索引:不允许有重复字段
主键索引:主键索引整个表只允许有一个,但是唯一索引可以有多个,功能一样。
索引相关概念:
聚簇索引:InnoDB内部有一个特殊的索引,叫聚簇索引,默认就是主键,如果>没有主键则选择唯一键,如果都没有,默认选择隐式的rowid。
二级索引:非聚簇索引都成为二级索引。
单列索引:只涉及一列。
多列/复合/联合/组合索引:涉及多列,最大16个列。覆盖索引:覆盖索引不是索引,描述的是一种现象,查询的列被查询条件中的索引包含了。也就是innoDB在查询的过程中只查询索引就可以返回了,不需要再去读表数据的block了。
回表:与覆盖索引相反,描述的也是一种现象,查询的列不能被查询条件中的索引包含,innoDB需要再去读一遍表数据的block才能返回数据。
我们规定生产环境查询语句不允许写“select *”的原因就是尽量避免回表带来的性能损耗。
网友评论