我有一个包含数百万条记录的表。
为简单起见,假设表是bank,架构如下,
bank_id int(Primary Key), bank_name varchar, bank_address varchar.
现在如果我运行一个查询
update bank set bank_name=NULL where bank_name='null'
我的问题是我的查询会锁定整个表吗?还是只有符合where条件的记录?
注意: 我知道,因为我正在使用非索引列进行查询,所以查询将花费更多时间,而且它是一次性执行的,所以我不太担心查询所花费的时间。
最佳答案
它将锁定整个表。
它在评估 where 子句时锁定它检查的每一行。
根据事务隔离设置,它还可以锁定值之间的间隙,防止插入。
关于mysql - MYSQL 使用非索引列更新查询会锁定整个表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49915193/