内部连接vs独立语句



出于好奇,我正试图获得更多关于这方面的背景信息。到目前为止,当我运行2个独立的sql语句时,我发现在sql Profiler中,我没有CPU周期,更少的读取和更少的持续时间,而不是采取脚本并使用内连接。这是一个典型的案例吗?我正在寻求帮助来更好地理解这个问题。

简单的例子:

SELECT *  FROM dbo.ChargeCode 
SELECT *  FROM dbo.ChargeCodeGroup

SELECT *  
FROM dbo.ChargeCode c 
INNER JOIN dbo.ChargeCodeGroup cc ON c.ChargeCodeGroupID = cc.ChargeCodeGroupID

从我的猜测是内连接花费额外的CPU周期,因为它做一个嵌套循环。我的思路对吗?

简单的回答是,您在这里做了两件不同的事情。在你的第一个例子中,你正在检索2个独立的实体。在第二个示例中,您要求RDBMS将2个实体组合(连接)成单个结果集。

join是RDBMS最强大的功能之一——它(通常)会尽可能高效地完成它——但这并不是说它是免费的或便宜的。

SELECT * FROM sometable

必须扫描整个表。如果两个表的ChargeCodeGroupID列上都有索引,那么INNER JOIN只扫描索引会快得多。(根据名字,我猜有)。当然,如果两个ChargeCodeGroupID列都没有索引,第二个查询比第一个查询慢。

最新更新