2016-06-07 85 views
0

我有一個我從未見過的獨特問題。首先我會簡化看看是否有明顯的答案。如有必要,我可以發佈有關查詢/執行計劃的更多詳細信息。SQL Server冗餘過濾器性能

編輯:無法附加實際執行計劃。它也很大,所以我不能粘貼XML。我的公司會阻止網站將文件保存在其他位置。我希望以前有人看到過這一點,並提出了尋找的建議。

我有一個觀點,即基本上是:

Select A.Customer 
     B.CustomerType 
     c.SalesPersonName 
     A.LineAmount 

From FactOrder A 
Join customer b on a.Customer = a.Customer 
Join SalesPerson c on a.SalesRepID = c.SalesRepID 

我再對視圖頂部的腳本。它首先將客戶列表放在變量表中,通常是少數。

Select v.Customer 
    ,  SUM(v.lineamount) as Sales 
From View v 
Join @CustomerList c on v.customer = c.Customer 
Where v.Customer in (select Customer From @CustomerList) 
Group by v.Customer 

我用的是哪裏一個加入過濾,和我得到幾乎立竿見影的效果。如果我只使用1種方法,它只是旋轉。有任何想法嗎?

+0

當試圖添加我的問題的其餘部分時,不斷收到錯誤..試圖找出答案。 –

+0

什麼是客戶?我和@Siyual在一起,我不瞭解你。 – sagi

+0

當我試圖粘貼我的問題的其餘部分時,我不斷收到錯誤。現在有充分的問題。 –

回答

0

確保您在任何適合的表中使用表別名。你也不需要where子句,它已經在INNER JOIN中完成;

SELECT 
v.Customer 
,SUM(v.ineamount) as Sales 
FROM View v 
JOIN @Customer c on v.customer = c.Customer 
GROUP BY v.Customer 
+0

這是我的問題。我有內部連接來過濾和Where子句。如果我在查詢中留下兩個,我會立即得到結果。如果我選擇其中的一個,它會旋轉並永不完成。 –

+0

在開啓實際執行計劃的情況下運行它,查詢之間有什麼區別? –

+0

這個計劃是非常不同的。如果我的問題沒有明顯的答案,我將不得不學會解讀執行計劃中的差異,並再次發佈更多細節。今天我要試着去做。謝謝 –