Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL中的计算列与内联逻辑_Sql_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

SQL中的计算列与内联逻辑

SQL中的计算列与内联逻辑,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我想知道当我使用计算列和内联逻辑时,性能是如何受到影响的 例如,当我使用 SELECT [ColA], [ColB], [ColA]/[ColB] AS [ColC] FROM [Table1] 当我使用计算列时 ColC as ColA/ColB 我认为他们都是一样的。没有区别,您检查过两个查询的执行计划了吗。内联将比计算列占用更少的资源。没有办法了解10000条关于性能的规则,然后总是编写性能绝对最佳的代码。思考绩效的最佳方式是忽略它,除非或直到你有一个实际的绩效问题,无论是真实的问题还

我想知道当我使用计算列和内联逻辑时,性能是如何受到影响的

例如,当我使用

SELECT [ColA], [ColB], [ColA]/[ColB] AS [ColC] FROM [Table1]
当我使用计算列时

ColC as ColA/ColB

我认为他们都是一样的。没有区别,您检查过两个查询的执行计划了吗。内联将比计算列占用更少的资源。没有办法了解10000条关于性能的规则,然后总是编写性能绝对最佳的代码。思考绩效的最佳方式是忽略它,除非或直到你有一个实际的绩效问题,无论是真实的问题还是由一些具体目标的衡量引起的综合问题,然后确定是什么导致了你的绩效问题,然后集中精力在这方面,如上文所述,用实际数据在实际查询中尝试这两种方法。在这种情况下,这两种方法都很好。在出现实际性能问题之前,做对您最有意义的事情,然后用您的数据进行测试。为了证实其他人的说法,假设您最终遇到性能问题,而计算列就是解决方法。一旦您实现了它,优化器就足够聪明,可以在您需要定义计算列的表达式的情况下使用它。因此,在您的示例中,如果您选择了colA/colB,那么优化器知道colC的定义就是这样的,并将使用它。无需更改代码/查询。