非常感谢帮助。
我有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))
我可以理解整个连接应该从函数中延长一段时间,因为单独的子集需要花费一分钟,但是,结果如此剧烈?我真的不知道从哪里开始?任何想法将不胜感激!!