什么是索引
相当于书籍的目录,
加快
查询速度
是不是索引越多越好?
索引会加快查询速度, 但是会拖慢写入速度, 因为每写入一条数据, 都需要重建索引
索引什么时候有用
条件越明确, 索引越有用
通俗点说, 经常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 表名;复制代码