小编典典

找到足够的行后,SQL Server TOP会停止处理吗?

sql

当您TOP在查询中使用SQL Server子句时,SQL Server引擎是否足以满足TOP X返回所需的条件,是否会停止搜索行?

考虑以下查询(假设some_text_field是唯一的,并且未为全文索引设置):

SELECT
    pk_id
FROM
    some_table
WHERE
    some_text_field = 'some_value';

SELECT TOP 1
    pk_id
FROM
    some_table
WHERE
    some_text_field = 'some_value';

第一个查询将需要搜索整个表并返回找到的所有结果。但是,按照我们的设置方式,该查询实际上会返回一个值。因此,TOP 1一旦发现匹配项,使用会阻止SQL
Server扫描表的其余部分吗?


阅读 151

收藏
2021-04-22

共1个答案

小编典典

是的,一旦找到足够的行,查询就会停止,并且不会查询表的其余部分。

但是请注意,您可能想要一个数据库可用于查询的索引。在这种情况下,获得第一场比赛和获得所有一场比赛之间实际上并没有任何性能差异。

2021-04-22