关于UPDATE和SELECT的内部机制?

一个100W的单字段数据表。我的两个SQL语句:

SELECT * FROM mytb WHERE mycol like '%aaaaaa%';
UPDATE mytb set mycol='AAAAAA' WHERE mycol like '%aaaaaa%'

在表中根本不存在符合WHERE 要求的记录

结果是:
SELECT 很快。0.38 秒
UPDATE很慢。8 秒

我原先以为的是UPDATE也会和SELECT一样,一行一行用WHERE条件比较。有符合条件的记录再UPDATE。这样的话如果一直没有符合条件的。那么就应该和SELECT一样。为什么上面会差别这么大呢。

问得比较菜。。各位指教。

Taxonomy upgrade extras:

select可以利用到query cache,key buffer等,而update则不可以,你要真想对比测试,需要确保每次查询都是最新的,例如每次测试都重启mysqld或者关闭query cache,key buffer等

MySQL方案、培训、支持

不用重启 加上sql_no_cache就可以测试啦,比如:
select sql_no_cache * from a;

不用重启 加上sql_no_cache就可以测试啦,比如:
select sql_no_cache * from a;

使用的是什么存储引擎做的测试?可以尝试一下,换一下其它引擎,看看结果如何?

update是先select,再delete,再insert

这是replace,不是update,呵呵

MySQL方案、培训、支持