在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文章对SQL Server最佳做法给出了公平的指导。(检查名为“
如何引用对象”的部分 )
该链接详细说明了在执行之前为解析和验证对象引用而执行的一组步骤:http :
//blogs.msdn.com/b/mssqlisv/archive/2007/03/23/upgrading-to-sql-server
-2005-and-default-schema-
setting.aspx
通过第二个链接,结论表明:
显然,最佳做法仍然存在:您应该完全限定所有对象的名称,而不用担心名称解析的成本。现实情况是,仍然有许多不完善的应用程序,此设置对那些情况很有帮助。
另外,如果在生产环境中不允许更改数据库名称,则您可能会认为在完全限定的名称中包括数据库名称。
问题内容: 例如,我喜欢在Redis中使用冗长的名称。 这样可以吗?还是会影响性能? 问题答案: 您正在谈论使用的密钥并没有那么长。 您提供的示例键用于一个集合,集合查找方法为O(1)。集合(SDIFF,SUNION,SINTER)上更复杂的操作是O(N)。可能的是,与使用较长的键相比,填充是更昂贵的操作。 Redis带有一个称为的基准实用程序,如果您修改src / redis-benchmark
本文向大家介绍使用匿名函数会影响性能吗?,包括了使用匿名函数会影响性能吗?的使用技巧和注意事项,需要的朋友参考一下 从某种意义上说,使用匿名函数会影响性能,您需要在每次迭代时创建一个新的函数对象。匿名函数始终使用变量名加载。顾名思义,匿名允许创建没有任何名称标识符的函数。它可以用作其他函数的参数。使用变量名调用它们- 示例 这就是可以使用JavaScript匿名函数的方式- 这是一个例子-
问题内容: 我正在使用MySQL + Hibernate。 MySQL表名长度和列名长度会影响应用程序性能吗? 例如) 哪个更好 ? 问题答案: 不,它不会,在任何程度上都无法衡量。 花更多的精力使您的架构易于理解。从长远(短期)来看,您获得的收益将超过使用较短且难以理解的模式名称所获得的无法衡量的飞秒。
假设我定义了两个包(都是perl类和对象) 和 .当上述类的实例访问它们的方法时,会有性能差异吗?我认为“长包名”会导致性能差异,因为perl在方法解析期间会对名称进行字符串比较。 由于在上述方法调用中会有名称解析,第一个(由于名称较短)将比第二个包名方法调用表现出更好的性能。 推测:perl不保留包名的哈希值,并且(在内部)与它们进行比较吗?
问题内容: 我们已经开始将spring aop用于我们应用程序的各个方面(当前的安全性和缓存)。 我的经理虽然十分了解这种技术的好处,但仍担心该技术对性能的影响。 我的问题是,你是否遇到了使用aop(特别是spring aop)引入的性能问题? 问题答案: 只要你能够控制自己的AOP,我就认为它是有效的。无论如何,我们确实确实存在性能问题,所以通过我们自己的推理,我们无法完全控制;)这主要是因为重
问题内容: varchar列上的索引是否会使查询运行缓慢?我可以将其设为int。而且我不需要做LIKE%比较。 问题答案: varchar列上的索引是否会使查询运行缓慢? 不,不是的。 如果优化器决定使用索引,则查询将运行得更快。 该表上的s / s / s会变慢,但不太可能引起注意。 我不需要做LIKE%比较 请注意,使用: …将 不 使用索引,但以下内容将: 关键是在字符串的左侧使用通配符,这