美文网首页
mysql索引

mysql索引

作者: 瓢鳍小虾虎 | 来源:发表于2021-01-29 11:20 被阅读0次

    管理索引相关语句

    查看索引:
    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 *”的原因就是尽量避免回表带来的性能损耗。

    相关文章

      网友评论

          本文标题:mysql索引

          本文链接:https://www.haomeiwen.com/subject/ehkqtltx.html