2013-05-06 85 views
1

我有一个表,并与以下行一个复杂的观看次数左连接 - 无限循环(不返回)

表CPI - 行数= 74559 视图most_recent - 行数= 69832

然后我试图做以下查询

SELECT DISTINCT TOP 201 cpi.cbuno, cpi.casebook, v.status_uno 
FROM CPI cpi 
inner JOIN most_recent v ON v.cbuno=cpi.cbuno 
where isnull(v.status_uno, -1) = 669 

我很快就得到了结果。然后我试着用一个左连接如下

SELECT DISTINCT TOP 201 cpi.cbuno, cpi.casebook, v.status_uno 
FROM CPI cpi 
left JOIN most_recent v ON v.cbuno=cpi.cbuno 
where isnull(v.status_uno, -1) = 669 

然后它经历一个无限循环..永远不会返回一个值。还有一件事要提到,如果我在where子句中使用v.status_uno = 669而不是(v.status_uno,-1)= 669,它会经历相同的无限循环。你们有什么想法吗?

感谢您的帮助

感谢, keth

+0

你好奥拉夫,它是一个错字,对不起that..i刚刚修好了,感谢名单 – keth 2013-05-06 12:22:15

+0

如何most_recent.cbuno和most_recent.status_uno中有许多空值? – 2013-05-06 12:31:07

+0

most_recent.cbuno中没有空值,但有25行为null_request.status_uno – keth 2013-05-06 12:41:17

回答

0

也许......

SELECT DISTINCT TOP 201 cpi.cbuno, cpi.casebook, v.status_uno 
FROM CPI cpi 
LEFT JOIN most_recent v 
    ON v.cbuno=cpi.cbuno 
    and v.status_uno=669 
+0

Hello xQbert,thanx的回复。是的,我尝试过,但没有运气 – keth 2013-05-06 12:24:19

+0

这两个表都有一个名为cbuno的列,这两个表都有该列索引或设置为主键/外键关系对吗?在这一点上,我们需要查看查询分析的结果(它使用的是哪个索引,是否执行表扫描等)。 – xQbert 2013-05-06 12:31:29

+0

most_recent不是查看表,CPI.cpi是CPI表的主键,它有一个pk索引 – keth 2013-05-06 12:51:04