mysql - MYSQL 使用非索引列更新查询会锁定整个表吗?

标签 mysql sql

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

为简单起见,假设表是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/

相关文章:

php - "Connect failed: Access denied for user ' 根 '@' 本地主机 ' (using password: YES)"来自 php 函数

sql - Postgres 按时间戳分组为 6 小时桶

javascript - 如何插入express js | Node js 值存入数据库

mysql - 从表中的最大 ID 中选择最小日期

java - Spring Boot 查询未更新 mysql 数据库

MySQL - SQL代码优化

SQL Server 数据库不会收缩

sql - 如何使用ScalaQuery插入BLOB字段?

mysql - 我应该为内部搜索引擎非规范化我的表吗?

mysql - MySQL 根据日期自动创建表分区