我们来看看MySQL数据库的SQL查询:
UPDATE `messages` SET `read`=1 WHERE `id`=1234;
让我们假设messages
是一个非常长的表,id
是自动增加和主键。
我的问题是:
当MySQL找到id=1234
的一条消息时,它会自动停止搜索吗?或者换句话说:在这样的查询中使用LIMIT
有什么意义吗?
当MySQL找到一条id = 1234的消息时,它会自动停止搜索吗?
因为id
是主键,所以它有一个索引。 MySQL使用该索引来查找要更新的行。它不是在寻找许多行的意义上进行搜索。它只是随机访问右侧的表。因为它是主键,MySQL知道它必须只更新一行。正如我们在美国马萨诸塞州波士顿所说的那样,它的速度很快。
在这样的查询中使用LIMIT有什么意义吗?
没有。
不要试图超越SQL。它是一种声明性语言,而不是程序性语言。使用您的UPDATE
查询来描述您想要的内容。从字面上看,MySQL在代码中使用数千个程序员年来计算出最快的程序。