日期:2014-05-17  浏览次数:20452 次

看了几篇关于sp_executesql的文章,有句话不太明白
若要提高性能,请在语句字符串中使用完全限定的对象名。

------解决方案--------------------
SQL code

EXECUTE sp_executesql 
          N'SELECT * FROM AdventureWorks2012.HumanResources.Employee 
          WHERE BusinessEntityID = @level',
          N'@level tinyint',
          @level = 109;

------解决方案--------------------
参考:
http://technet.microsoft.com/zh-cn/library/dd193298(zh-tw).aspx
------解决方案--------------------
SQL code
MSDN确实有这样的描述,但是至于为何会提高性能没有明确解释,但是建议这样写
完全限定对象名:数据库名称.所有者(默认dbo).对象名(表,SP,视图...)

------解决方案--------------------
意思就是说通常我们引用表都是直接表名什么的
select * from tb

或者exec sp

没有指定架构名称,系统还需要去检索当前用户的默认架构
然后追加上完整的名称,然后编译执行

如果你是 select * from dbo.tb
 或者exec mydbo.sp
这样少了一个检索的步骤

所以提升了性能


这个就好比 select *
系统要去检索这个*都有哪些东西。
------解决方案--------------------
悠悠解释的很正确,悠悠解释的很勤快,悠悠好棒。
------解决方案--------------------
数据库名.所有者(架构名称).表名