mysql-查询的谣言


创建表

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)

  1. 这一列有没有null
  2. 这一列有没有索引
    如果没有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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值