Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 r2 SQL server 2008 r2 TOP如何工作?_Sql Server 2008 R2 - Fatal编程技术网

Sql server 2008 r2 SQL server 2008 r2 TOP如何工作?

Sql server 2008 r2 SQL server 2008 r2 TOP如何工作?,sql-server-2008-r2,Sql Server 2008 R2,TOP实际上是如何工作的 我经历过。我知道TOP用于限制结果集。 但我不明白的是,假设我指定了从表中选择Top(10),其中某些条件是否在处理表中的前10条记录(可能只包含5条与条件匹配的记录)后停止,或者它将首先处理所有记录,然后返回结果集的前10条记录 是的,第二个假设是正确的 首先,它将处理所有记录,然后返回结果集的前10条记录 数据库引擎将忽略TOP子句运行查询,然后在最后将结果集缩减为请求的n行数 正确答案就存在于此。实际上,SQL Server 2008使用不同的模型来执行查询。如果

TOP实际上是如何工作的

我经历过。我知道TOP用于限制结果集。
但我不明白的是,假设我指定了
从表中选择Top(10),其中某些条件
是否在处理表中的前10条记录(可能只包含5条与条件匹配的记录)后停止,或者它将首先处理所有记录,然后返回结果集的前10条记录

是的,第二个假设是正确的

首先,它将处理所有记录,然后返回结果集的前10条记录


数据库引擎将忽略TOP子句运行查询,然后在最后将结果集缩减为请求的n行数

正确答案就存在于此。实际上,SQL Server 2008使用不同的模型来执行查询。

如果您加入查询或更改行为,它的工作方式是否类似。还要注意:如果没有
ORDER BY
子句,
TOP(x)
真的没有任何意义。如果需要前10行,则始终需要定义这些行的排序方式(按哪列排序)