mysql更新一个字段和更新多个字段花费的时间?

测试环境

mac 、mysql8

就拿django的User表来测试,django的User表如果包括主键就是11个字段。

为了测试一个sql语句所花费的时间,需要在mysql如下设置:

set profiling=1;
show variables like 'profiling';

然后通过下面这条语句查看执行时间

show profiles;

我分为两种情况来测试

1.只更新一个字段

2.更新User表全部字段(10个字段,id是不更新的)。

下面是我执行的sql语句

# 方式一
update auth_user set last_name="zhenyu" where id=1;

#方式二
update auth_user set last_name="zhenyu01",password="xx123",last_login="2021-09-16 15:41:40.000000",is_superuser=0,
username="username",is_staff=0,is_active=1,date_joined="2021-09-16 15:40:52.589243"
where id=1;

说明:数据库中只有一条记录

我把方式一和方式二分别执行,中间间隔一分钟,然后一轮间隔俩分钟。(这里我拿表来测试)。这里为了测试,我执行了6轮。

请添加图片描述
可以看到结果都一样,方式一花费时间是比方式二少的。

这里,我发现了一个?

当我执行方式一完后,马上复制粘贴方式二语句到数据库执行(这里花费的时间应该是1s)。会有一个现象。

方式二所花费的时间有时比方式一少。可能是因为数据库的某种机制导致的吧,这里我也说不清楚,希望哪位大佬可以来解释下。(这里我猜想一下,数据库应该有线程池,方式一相对于一个请求唤醒了某个线程,方式二执行时正好可以用这个线程)
请添加图片描述
请添加图片描述


版权声明:本文为qq_43622190原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。