[MySQL光速入门]027 索引

什么是索引

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

是不是索引越多越好?

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

索引什么时候有用

条件越明确, 索引越有用

通俗点说, 经常where哪个字段, 就给哪个字段加索引

试验一下

我们为了看出速度上的差别, 我们需要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();
复制代码

耗时比较

mysql支持多种索引

创建索引

建表时创建
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;
复制代码

建表后创建
create index 索引名称 on 表名(字段名)
复制代码

查看索引

show index from 表名;
复制代码

删除索引

drop index 索引名称 on 表名;
复制代码

快速跳转

转载于:https://juejin.im/post/5cb80f8b518825327e23ed51

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值