sql – 使用完全限定名称会影响性能吗?

前端之家收集整理的这篇文章主要介绍了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

通过第二个链接,结论说:

ObvIoUsly the best practice still stands: You should fully qualify all object names and not worry about the name resolution cost at all. The reality is,there are still many imperfect applications out there and this setting help great for those cases.

另外,如果在生产环境中不允许数据库名称更改,则可以考虑将数据库名称包含在完全限定名称中.

原文链接:https://www.f2er.com/mssql/81248.html

猜你在找的MsSQL相关文章