SQL Server冗余过滤器性能
我有一个我从未见过的独特问题。首先我会简化看看是否有明显的答案。如有必要,我可以发布有关查询/执行计划的更多详细信息。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种方法,它只是旋转。有任何想法吗?
确保您在任何适合的表中使用表别名。你也不需要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
这是我的问题。我有内部连接来过滤和Where子句。如果我在查询中留下两个,我会立即得到结果。如果我选择其中的一个,它会旋转并永不完成。 –
在开启实际执行计划的情况下运行它,查询之间有什么区别? –
这个计划是非常不同的。如果我的问题没有明显的答案,我将不得不学会解读执行计划中的差异,并再次发布更多细节。今天我要试着去做。谢谢 –
当试图添加我的问题的其余部分时,不断收到错误..试图找出答案。 –
什么是客户?我和@Siyual在一起,我不了解你。 – sagi
当我试图粘贴我的问题的其余部分时,我不断收到错误。现在有充分的问题。 –