将MYSQL更新查询与非索引列锁定整个表吗?

时间:2018-04-19 07:31:36

标签: mysql sql

我有一张包含数百万条记录的表格。

为简单起见,假设表格为银行,架构位于下方,

bank_id int(Primary Key), bank_name varchar, bank_address varchar.

现在,如果我运行查询

  

更新银行集bank_name = NULL其中bank_name ='null'

我的问题是我的查询会锁定整个表吗?或仅与匹配where条件的记录?

注意: 我理解,当我查询非索引列时,查询将花费更多时间并且它是一次性执行所以我并不担心查询所花费的时间。

1 个答案:

答案 0 :(得分:1)

它将锁定整个表格。

在评估where子句时,它会锁定它检查的每一行。

根据事务隔离设置,它还可能会锁定值之间的间隙,从而阻止插入。