创建表
CREATE TABLE `exercise_t` (
`uid` INT(11) NOT NULL,
`uname` VARCHAR(20) NOT NULL,
`create_at` DATETIME NOT NULL
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
利用存储过程写入数据
CREATE DEFINER=`root`@`localhost` PROCEDURE `employees`.`testc`()
begin
declare i int default 0;
while (i < 100000) do -- 这个值可以调小一点
begin
insert exercise_t(uid, uname, create_at) values(i, concat('vs_', i), current_timestamp);
set i = i + 1;
end;
end while;
end
count(*) count(col)
- 这一列有没有null
- 这一列有没有索引
如果没有null,且有索引,两者的速度没有很大差异
如果有null,且有索引,count(*)要慢
count(col),列越靠后,越慢
join 大表和小表
创建一个大表
create exercise_t1 as select * from exercise_t where uid < 30000;
创建一个小表
create exercise_t2 as select * from exercise_t where uid < 10;
比较两个sql的执行速度,差异不大
select count(*) from exercise_t1, exercise_t2
为了避免受到innodb的buffer pool和数据库缓存的影响,重启mysql服务
net stop mysql57
net start mysql57
再执行这条语句
select count(*) from exercise_t2, exercise_t1