加入Subquery与另一个具有相同结果的人相比,需要更长的时间

时间:2015-03-23 19:55:58

标签: sql sql-server sql-server-2008

非常感谢帮助。

我有2个不同的子查询返回相同的3列,结果相同

子查询1来自一个表,需要大约30秒才能填充 子查询2来自一个函数,大约需要1:30填充

问题是,使用子查询2,JOIN的整个过程大约需要20多分钟,而使用子查询1只需大约2-3分钟

示例:子查询1(表)

SELECT A.*
       , B.Company
FROM TABLE a
LEFT JOIN (  SELECT ID, 
                 NULLIF(ID_CODE,'0') AS ID_CODE 
                 Company
              FROM xyz
            ) b
  ON COALESCE(a.ID_CODE, CONVERT(Varchar(10), a.ID)) = COALESCE(b.ID_CODE, CONVERT(Varchar(10), b.ID))

Versus Subquery 2(func)

SELECT A.*
       , B.Company
FROM TABLE a
LEFT JOIN (  SELECT ID, 
                 NULLIF(ID_CODE,'0') AS ID_CODE 
                 Company
              FROM Func_xyz
            ) b
  ON COALESCE(a.ID_CODE, CONVERT(Varchar(10), a.ID)) = COALESCE(b.ID_CODE, CONVERT(Varchar(10), b.ID))

我可以理解整个连接应该从函数中延长一段时间,因为单独的子集需要花费一分钟,但是,结果如此剧烈?我真的不知道从哪里开始?任何想法将不胜感激!!

0 个答案:

没有答案
相关问题