当使用唯一键作为查询条件时,MySQL会自动限制受影响的行吗?

问题描述 投票:1回答:1

我们来看看MySQL数据库的SQL查询:

UPDATE `messages` SET `read`=1 WHERE `id`=1234;

让我们假设messages是一个非常长的表,id是自动增加和主键。

我的问题是:

当MySQL找到id=1234的一条消息时,它会自动停止搜索吗?或者换句话说:在这样的查询中使用LIMIT有什么意义吗?

mysql
1个回答
2
投票

当MySQL找到一条id = 1234的消息时,它会自动停止搜索吗?

因为id是主键,所以它有一个索引。 MySQL使用该索引来查找要更新的行。它不是在寻找许多行的意义上进行搜索。它只是随机访问右侧的表。因为它是主键,MySQL知道它必须只更新一行。正如我们在美国马萨诸塞州波士顿所说的那样,它的速度很快。

在这样的查询中使用LIMIT有什么意义吗?

没有。

不要试图超越SQL。它是一种声明性语言,而不是程序性语言。使用您的UPDATE查询来描述您想要的内容。从字面上看,MySQL在代码中使用数千个程序员年来计算出最快的程序。

© www.soinside.com 2019 - 2024. All rights reserved.