当您TOP在查询中使用SQL Server子句时,SQL Server引擎是否足以满足TOP X返回所需的条件,是否会停止搜索行?
TOP
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扫描表的其余部分吗?
TOP 1
是的,一旦找到足够的行,查询就会停止,并且不会查询表的其余部分。
但是请注意,您可能想要一个数据库可用于查询的索引。在这种情况下,获得第一场比赛和获得所有一场比赛之间实际上并没有任何性能差异。