美文网首页
MySQL索引

MySQL索引

作者: zxhChex | 来源:发表于2019-08-13 16:35 被阅读0次

    普通索引
    普通索引仅有一个功能:加速查询

    create table t10(
    id int auto_increment primary key,
    name varchar(32),
    email varchar(64),
    index ix_name(name)
    /添加索引到列名 name, 索引名为 ix_name/
    );

    create index ix_name on t10(name);
    单独创建索引
    show index from t10\G
    查看索引
    drop index ix_name on t10;
    删除索引ix_name

    唯一索引
    加速查询 和 唯一约束(可含null)
    create table t2(
    id int not null auto_increment primary key,
    name varchar(32),
    email varchar(64),
    unique index ix_name (name)
    );

    create unique index 索引名 on 表名(列名);
    创建唯一索引
    ALTER TABLE 表名 DROP INDEX 索引名;
    删除唯一索引

    主键索引
    主键有两个功能:加速查询 和 唯一约束(不可含null)
    当一个列被创建为主键是,它就会被赋予主机索引的属性。

    联合索引
    联合索引是将n个列联合成一个索引
    其应用场景为:频繁的同时使用 n 个列来进行查询,如:where name = 'shark' and age = 18。
    create table studens(
    id int not null auto_increment primary key,
    name varchar(32) not null,
    age int not null,
    )

    create index idx_name_age on students(name,age);
    如上创建联合索引之后,查询时可以这么用:

    name and age -- 使用索引 where name='shark' and age=18;
    name -- 使用索引 where name='shark';
    where 自己的第一个条件的列名必须是组合索引列的最左边的那个.

    explain select * from test_data where name='55157'\G


    没有索引的sql执行计划 创建索引后的sql执行计划

    索引过多的缺点
    增加写的压力
    增加 MySQL 查询优化器的选择时间。

    相关文章

      网友评论

          本文标题:MySQL索引

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