让我们看一下对MySQL数据库的此SQL查询:
UPDATE `messages` SET `read`=1 WHERE `id`=1234;
让我们假设messages
是一个非常长的表,而id
是自动递增的主键。
我的问题是:
当MySQL用id=1234
找到一条消息时,MySQL是否自动停止搜索?或者换句话说:像这样的查询中有没有必要使用LIMIT
?
答案 0 :(得分:2)
当发现一条消息时,MySQL是否自动停止搜索 id = 1234?
由于id
是主键,因此具有索引。 MySQL使用该索引来查找要更新的行。从看很多行的意义上来说,这不是搜索。它只是随机访问右行中的表。因为它是主键,所以MySQL知道它只能更新一行。正如我们在美国马萨诸塞州波士顿所说的那样,它实在是太快了。
在这样的查询中是否有任何使用LIMIT的点 一个?
不。
不要试图超越SQL。这是一种说明性语言,而不是 procedural 。使用您的查询(如UPDATE
)来描述您想要的内容。从字面上看,MySQL在找出最快速使用的程序的代码中已经有数千个程序员的年头。