我有一个简单的查询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
列上创建一个唯一的索引/主键,这将使它变得更快,因为不再需要进行完整的表扫描,因为索引可以使用更快的搜索算法。