让我们看一下对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在它用来找出最快的程序的代码中拥有数千年的程序员年。