用OR进行MySQL行锁定

时间:2012-08-01 08:53:40

标签: mysql locking

我有以下查询:

SELECT * WHERE accountId = 1 AND (phone = "1234" OR fax = "5678") FOR UPDATE

WHERE子句中的所有3列都有键。 accountId是索引,电话和传真与accountId结合使用以制作唯一索引:

UNIQUE KEY `phone` (`phone`,`accountId`),
UNIQUE KEY `phone` (`fax`,`accountId`),
KEY `aid` (`aid`),

哪些密钥会被锁定?我需要的是用phone =“1234”||来锁定行对于accountId = 1,传真=“5678”。是正确优化OR还是锁定所有行。

Mysql版本是5.0

1 个答案:

答案 0 :(得分:0)

尝试

EXPLAIN SELECT * WHERE accountId = 1 AND (phone = "1234" OR fax = "5678") FOR UPDATE

获取有关MySQL如何执行此语句的信息。