相关疑难解决方法(0)

存储过程与内联 SQL

我知道存储过程通过执行路径更有效(比应用程序中的内联 sql)。然而,当被按下时,我对原因不是很了解。

我想知道对此的技术推理(以稍后我可以向某人解释的方式)。

谁能帮我制定一个好的答案?

performance sql-server stored-procedures query-performance

29
推荐指数
1
解决办法
3万
查看次数

通过删除运算符哈希匹配内连接来提高查询性能

在尝试将下面这个问题的内容应用于我自己的情况时,如果可能的话,我对如何摆脱运算符 Hash Match (Inner Join) 感到有些困惑。

SQL Server 查询性能 - 消除对哈希匹配(内部联接)的需要

我注意到 10% 的成本,并想知道我是否可以减少它。请参阅下面的查询计划。

在此处输入图片说明

这项工作来自我今天必须调整的查询:

SELECT c.AccountCode, MIN(d.CustomerSID) 
FROM   Stage.Customer c 
INNER JOIN Dimensions.Customer d  ON c.Email = d.Email
                                  OR (
                                          c.HomePostCode = d.HomePostCode
                                       AND c.StrSurname = d.strSurname
                                                                    )
GROUP BY c.AccountCode
Run Code Online (Sandbox Code Playgroud)

添加这些索引后:

---------------------------------------------------------------------
-- Create the indexes
---------------------------------------------------------------------

CREATE NONCLUSTERED INDEX IDX_Stage_Customer_HOME_SURNAME_INCL
ON Stage.Customer(HomePostCode ,strSurname)
INCLUDE (AccountCode)
--WHERE HASEMAIL = 0
--WITH (ONLINE=ON, DROP_EXISTING = ON)
go


CREATE NONCLUSTERED INDEX IDX_Dimensions_Customer_HOME_SURNAME_INCL
ON Dimensions.Customer(HomePostCode ,strSurname)
INCLUDE (AccountCode,CustomerSID)
--WHERE HASEMAIL = …
Run Code Online (Sandbox Code Playgroud)

performance index sql-server execution-plan sql-server-2014 query-performance

9
推荐指数
1
解决办法
5万
查看次数