美文网首页
第27课 索引

第27课 索引

作者: 猫哥的技术博客 | 来源:发表于2019-04-13 22:59 被阅读0次

    什么是索引

    相当于书籍的目录, 加快查询速度

    是不是索引越多越好?

    索引会加快查询速度, 但是会拖慢写入速度, 因为每写入一条数据, 都需要重建索引

    索引什么时候有用

    条件越明确, 索引越有用
    通俗点说, 经常where哪个字段, 就给哪个字段加索引

    image.png

    试验一下

    我们为了看出速度上的差别, 我们需要3,000,000行数据...
    使用存储过程进行插入

    drop table if exists test;
    
    create table test(
        id int,
        name varchar(20),
        sex char(1) default '男',
        age int not null
    );
    
    drop procedure if exists batch_insert;
    
    create procedure batch_insert() begin 
        declare i int default 0;
        declare sex_str char(1) default '';
        declare age_int int default 0;
        declare name_str varchar(20) default '';
    
    
        while i< 3000000 do
            set i = i + 1;
            set name_str = CONCAT('张三_',i);
            if age_int > 110 then 
                set age_int = 1;
            end if;
            set age_int = age_int + 1;
            if i%3 = 0 then 
                set sex_str = '女';
            else 
                set sex_str = '男';
            end if;
    
            insert into test(id,sex,age,name) values(i,sex_str,age_int,name_str);
            if i % 100000 = 0 then 
                select CONCAT('当前是第',i,'行...');
            end if;
        end while;
    end;
    
    call batch_insert();
    

    耗时比较

    image.png

    mysql支持多种索引

    mysql索引.png

    创建索引

    建表时创建

    drop table if exists test2;
    create table test2( 
        id int not null,
        name varchar(20) not null,
        sex tinyint(1) not null,
        age tinyint(1) not null,
        index(id),
        index(name),
        index(sex),
        index(age)
    );
    
    desc test2;
    
    image.png image.png

    建表后创建

    create index 索引名称 on 表名(字段名)
    
    image.png

    查看索引

    show index from 表名;
    
    image.png

    删除索引

    drop index 索引名称 on 表名;
    
    image.png

    相关文章

      网友评论

          本文标题:第27课 索引

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