Vyr*_*tek 5 sql sql-server merge join
在尝试优化使用MERGE的存储过程时,我偶然发现了这篇文章.我应该如何解释大胆的陈述,说不包括与常数的比较?
http://technet.microsoft.com/en-us/library/cc879317(v=sql.105).aspx
仅在ON子句中指定搜索条件,以确定在源表和目标表中匹配数据的条件.也就是说,仅指定目标表中与源表的相应列进行比较的列.不要包括与其他值(如常量)的比较.
这是否意味着我应该避免使用看起来像这样的ON语句?
ON [Source].[CategoryId] = [Target].[CategoryId] AND [Source].[Color] = @Color
Run Code Online (Sandbox Code Playgroud)
这个建议是仅适用于MERGE还是适用于所有类型的JOIN?
参数还可以,推荐。
您应该避免使用诸如 ON 1=1 之类的条件加入
由于减少了查询编译和重新编译的频率,因此可以提高查询性能。查询优化器不会将简单参数化过程应用于 MERGE 语句。因此,包含文字值的 MERGE 语句的执行效果可能不如单独的 INSERT、UPDATE 或 DELETE 语句,因为每次执行 MERGE 语句时都会编译一个新计划。
将 MERGE 语句的ON 子句和 WHEN 子句中的所有文字值参数化。例如,您可以将 MERGE 语句合并到存储过程中,用适当的输入参数替换文字值。
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |