SQL Server将读取子查询的所有记录吗?

时间:2015-04-22 12:25:33

标签: sql sql-server

SELECT * 
FROM (SELECT [coit_id] AS commodity
          ,[sist_id]
          ,[cost_modified_date]
          ,[cost_timestamp]
    FROM [Cargo_Ver_3_0_33].[dbo].[Commodity_State]) 
WHERE 
    commodity > 15 

SQL在检查条件时是否首先读取所有记录?

2 个答案:

答案 0 :(得分:0)

这里不需要进行子查询,但成本会更高。以下查询将提供相同的结果。在上面的示例中,SQL引擎将首先构建子选择列表,然后执行外部查询,但是您没有完成任何需要子查询的唯一列表。

    SELECT 
    [coit_id] AS commodity,
    [sist_id],
    [cost_modified_date],
    [cost_timestamp],
    FROM [Cargo_Ver_3_0_33].[dbo].[Commodity_State]  WHERE commodity > 15;

答案 1 :(得分:0)

有一篇非常好的文章关于" How SQL Server executes a query"。

您可以先阅读并查看Data caches然后Query Execution来执行某些搜索和其他操作的电话。