在找到第一个匹配项后,使MySQL查询返回/停止执行



我有一个简单的查询Select * From `TableName` Where `Id` = @Id Limit 1,它在一个包含数十万条记录的表上执行。

Id是唯一的自动递增主列,因此,例如,只能有一行Id等于33或69。

在找到第一个匹配项时,如何使此查询返回/停止执行?还是它会自动做到这一点?

例如,像这样的C#代码:

foreach (var entry in entries)
if (entry.Id == RequiredId)
return entry;

为了回答您的问题,查询计划器将知道由于limit关键字的原因在第一次匹配后退出,并且不会恢复完整的表扫描。

如果你想更进一步,可以在Id列上创建一个唯一的索引/主键,这将使它变得更快,因为不再需要进行完整的表扫描,因为索引可以使用更快的搜索算法。

最新更新