sql – 使用完全限定名称会影响性能吗?
在SQL Server中使用完全限定的表名对性能有任何影响吗?
我有一个查询,我加入了不同数据库中的两个表,DBA建议省略主机查询上的数据库名称,我猜这是用于性能或惯例. 所有表完全合格 USE [DBFoo] SELECT * FROM [DBFoo].[dbo].[people] a INNER JOIN [DBBar].[dbo].[passwords] b on b.[EntityID] = a.[EntityID] 首选? USE [DBFoo] SELECT * FROM [dbo].[people] a INNER JOIN [DBBar].[dbo].[passwords] b on b.[EntityID] = a.[EntityID] 这是否真的有所作为? 解决方法通常首选使用完全限定名称,但有一些注意事项适用.我会说这很大程度上取决于要求,一个答案可能不足以满足所有的情况.请注意,这只是一个编译绑定,而不是一个执行的绑定.因此,如果您执行相同的查询数千次,只有第一次执行会“查找”查找时间,这意味着在完全限定名称的情况下,查找时间较少.这也意味着使用完全限定名将保存编译开销(执行查询时的第一次). 其余的将重用已编译的名称,其中名称被解析为对象引用. 这个MSDN Article给出了SQL Server最佳实践的公平指导. (检查名为:如何参考对象的部分) 此链接更详细地介绍了在执行之前完成的步骤,以解决和验证对象引用:http://blogs.msdn.com/b/mssqlisv/archive/2007/03/23/upgrading-to-sql-server-2005-and-default-schema-setting.aspx 通过第二个链接,结论说:
另外,如果在生产环境中不允许数据库名称更改,则可以考虑将数据库名称包含在完全限定名称中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |