什么是索引
相當(dāng)于書籍的目錄,
加快查詢速度
是不是索引越多越好?
索引會加快查詢速度, 但是會拖慢寫入速度, 因為每寫入一條數(shù)據(jù), 都需要重建索引
索引什么時候有用
條件越明確, 索引越有用
通俗點(diǎn)說, 經(jīng)常where哪個字段, 就給哪個字段加索引

image.png
試驗一下
我們?yōu)榱丝闯鏊俣壬系牟顒e, 我們需要3,000,000行數(shù)據(jù)...
使用存儲過程進(jìn)行插入
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('當(dāng)前是第',i,'行...');
end if;
end while;
end;
call batch_insert();
耗時比較

image.png
mysql支持多種索引

mysql索引.png
創(chuàng)建索引
建表時創(chuàng)建
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
建表后創(chuàng)建
create index 索引名稱 on 表名(字段名)

image.png
查看索引
show index from 表名;

image.png
刪除索引
drop index 索引名稱 on 表名;

image.png