2010-08-16 51 views
5

嗨我试过一个选择查询,它包含SQL Server CE上的左外部联接,并且需要30秒才能执行。
然后我改变了相同的查询是一个内部联接,并采取少于1秒。
相同的外部查询在SQL Server 2008上非常快。
没有人知道这是为什么吗?
此性能问题的解决方法是什么?
我想到2个问题,我联盟,但我不喜欢这个解决方案真的导致代码重复。
感谢为什么SQL Server CE 3.5上的LEFT OUTER JOIN性能不好?

编辑:
另一查询有不好的表现是select * from table where item not in (select item from table2)
很奇怪真的,但这个查询需要更改到左外连接这样的表现是固定

+0

你左手的左手侧表中有多少行有加入? – 2010-08-16 06:31:58

+0

请问什么是查询,架构等? – gbn 2010-08-16 06:34:30

+0

在一个表中有3600行,在另一个表中有6400个 – Karim 2010-08-16 06:44:56

回答

4

我发现这个问题
它表明SQL Server CE在优化外连接方面存在问题。
因此,问题出现在一个表中有索引,另一个表中没有索引。
http://msdn.microsoft.com/en-us/library/ms172984(SQL.100).aspx 部分“限制使用外连接”
此修复程序是外键添加一个索引和性能进行了固定

+0

批准现在你自己的答案正确 – abatishchev 2010-08-16 14:14:04

+0

我不能批准我自己的答案,直到2天过去:(“你可以接受你自己的答案在2天内(点击这个框来解雇) “ – Karim 2010-08-16 14:54:01