繁体   English   中英

mysql UPDATE,性能WHERE检查vs不检查

[英]mysql UPDATE, performance WHERE check vs no check

我有一个非常长的表,具有10000行。 9500行的列设置为1,其余500的列设置为0。我想更新表,以便所有行的列设置为1。

使用WHERE column = 0会更快吗?或者跳过WHERE并仅更新全部会更好吗? 我正在使用准备好的声明。

  • 谢谢

这是个有趣的问题。 通常,我想说where column = 0更好。 它永远不会恶化到可察觉的水平,但是在MySQL中却可能没有什么不同。

在列上没有索引的情况下,查询将仍然需要读取所有行,以标识需要更新的行。 因此,无论如何查询都将进行全表扫描。 即使具有索引,优化器仍可能选择全表扫描,除非您在column上具有聚集索引。

然后,进行更新的开销就是维护日志。 我很确定MySQL仅将实际更改记录到数据库中。 换句话说,它还是在进行比较。 因此,MySQL不会将值“重新更新”为相同的值。 注意:并非所有数据库都以这种方式运行。

话虽如此,如果您打算这样做,我将始终将where column = 0 在10,000行中,性能不是大问题。 我认为代码的清晰度更高。 另外,我为多个数据库编写代码,所以我更喜欢编写在所有数据库上都能正常工作的代码。

通过我的脚本执行时间测量,对于MariaDB,该查询的结果几乎相同(我的意思是结果和时间)。

我也会在MySQL上尝试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM