2010-08-16 74 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