Sql server 2008 无连接谓词警告-为什么此查询从未完成/超时?

Sql server 2008 无连接谓词警告-为什么此查询从未完成/超时?,sql-server-2008,dynamic-sql,Sql Server 2008,Dynamic Sql,以下是我得到“无连接谓词”警告的查询: 基本上,我有两个查询,我想用OR连接它们(从这两个查询中获得结果)。我相信它试图将这两个查询作为笛卡尔积连接起来,这不是我想要的 如果我将其分为两个查询并UNION结果,则速度很快。然而,这让我重新构造了我的动态SQL。我想把它格式化,这样我可以在那里有一个或,或者如果需要的话有一个和。括号不正确。它们应该如下所示,以便它知道整个OR中的d是相同的 select DISTINCT d.* from Device d , Company c1 WHERE

以下是我得到“无连接谓词”警告的查询:

基本上,我有两个查询,我想用OR连接它们(从这两个查询中获得结果)。我相信它试图将这两个查询作为笛卡尔积连接起来,这不是我想要的


如果我将其分为两个查询并
UNION
结果,则速度很快。然而,这让我重新构造了我的动态SQL。我想把它格式化,这样我可以在那里有一个
,或者如果需要的话有一个

括号不正确。它们应该如下所示,以便它知道整个OR中的d是相同的

select DISTINCT d.* from Device d , Company c1 
WHERE  d.CustomerID = c1.CompanyID AND 
 (
  c1.CompanyNumber in (SELECT * FROM [dbo].[Split]   ('56257100', ','))
  OR  
  EXISTS ( select * from (SELECT * FROM [dbo].[Split] ('American', ',')) as s     
         WHERE d.CustomerID = c1.CompanyID AND c1.CompanyName like '%' + s.items + '%' ) 
 )

或者经常比联合行动慢得多。从工会开始是更好的做法。
select DISTINCT d.* from Device d , Company c1 
WHERE  d.CustomerID = c1.CompanyID AND 
 (
  c1.CompanyNumber in (SELECT * FROM [dbo].[Split]   ('56257100', ','))
  OR  
  EXISTS ( select * from (SELECT * FROM [dbo].[Split] ('American', ',')) as s     
         WHERE d.CustomerID = c1.CompanyID AND c1.CompanyName like '%' + s.items + '%' ) 
 )