例子:
创建表
create table test(
id int not null,
username varchar(16) not null
)
插入100000条数据
DELIMITER #
CREATE PROCEDURE pro1()
BEGIN
DECLARE i INT DEFAULT 0;
WHILE i<100000 DO
INSERT INTO test VALUES(i, CONCAT('aa', i));
SET i=i+1;
END WHILE;
END #
CALL pro1();
查询一条记录id=54321
select * from test where id=54321;
查看执行时间Total Time : 00:00:00:063
通过explain查看执行信息
explain select * from test where id=54321;
查询一条记录id=54321
select * from test where id=54321;
查看执行时间Total Time : 00:00:00:000
通过explain查看执行信息
explain select * from test where id=54321;
普通索引:加速查询
1.创建表时候指定索引
create table test2(
id int not null,
username varchar(20) not null,
index index_username (username(10))
)
2.使用create创建索引
create index index_username on test2(username(10));
3.使用alter添加索引
alter table test2 add index index_username(username(10));
4.删除索引
drop index index_username on test2;
唯一索引:加速查询,唯一约束(可以含有null)
1.创建表时候指定索引
create table test3(
id int not null,
username varchar(20) not null,
unique index index_username (username(10))
)
2.使用create创建索引
create unique index index_username on test3(username(10));
3.使用alter添加索引
alter table test3 add unique index index_username(username(10));
4.删除索引
drop index index_username on test3;
复合(组合,多列)索引:
应用场景:频繁的同事使用多个列进行查询,例子: where n1='aaa' and n2=888;
1.创建表指定索引
create table test4(
name varchar(32) not null,
age int not null,
index index_name_age (name(10), age)
)
2.使用create创建索引
create index index_name_age on test4(name(10), age);
3.使用alter添加索引
alter table test4 add index index_name_age(name(10), age);
主键索引:加速查询,唯一约束(不可以含有null)
1.创建表的时候指定
create table test5(
id int not null primary key auto_increment,
username varchar(20)
)