![](/img/trans.png)
[英]How can I speed up a count(*) which is already using indexes? (MyISAM)
[英]Which can be updated faster, using or not using additional condition in MyISAM?
我正在尝试使用 MySQL(引擎:MyISAM)中的单个查询来更新多条记录。
看起来像:
UPDATE table_name SET delete_flag=true WHERE column_1={value}
我想将所有delete_flag
设置为true
。 然后,我想出了像这样添加 WHERE 子句:
UPDATE table_name SET delete_flag=true WHERE column_1={value} AND delete_flag=false
(delete_flag 没有任何索引。)
虽然它可能取决于记录的数量,但我想知道哪种方法更快。
你能给我你的建议吗? 如果取决于情况,请告诉我。
谢谢。
据推测, id
在表中是唯一的,因此 MySQL 将根据该条件查找需要更新的一行。
MySQL 然后在进行更新之前检查值是否更改。 因此,当记录没有改变时,MySQL 引擎不会做额外的工作(例如记录)。
性能上的任何差异都可以忽略不计,而且很难量化。
如果您添加INDEX(delete_flag, id)
,那么您的第二个选项将运行得更快,因为它会查看更少的行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.