Sql 选择*比选择列列表快
我有一个复杂的数据库视图,它通过对数据库执行多个连接(左连接和内连接)返回26'404行,这里包括子查询中的一些列 我尝试运行两个查询: (一) 及 (二) 第一次查询执行时间:0:00:40 第二次查询执行时间:0:02:13 当我从不同的数据库调用此视图时,时间上的差异更大,从那里执行join[0:00:02 VS 0:02:30]。(是的,2秒对2分钟) 有人能解释为什么会这样吗?我真的找不到任何合乎逻辑的理由Sql 选择*比选择列列表快,sql,database,tsql,Sql,Database,Tsql,我有一个复杂的数据库视图,它通过对数据库执行多个连接(左连接和内连接)返回26'404行,这里包括子查询中的一些列 我尝试运行两个查询: (一) 及 (二) 第一次查询执行时间:0:00:40 第二次查询执行时间:0:02:13 当我从不同的数据库调用此视图时,时间上的差异更大,从那里执行join[0:00:02 VS 0:02:30]。(是的,2秒对2分钟) 有人能解释为什么会这样吗?我真的找不到任何合乎逻辑的理由 编辑:将子查询生成的视图列包含在选择列表中会使执行时间恢复正常(2秒)。您的执
编辑:将子查询生成的视图列包含在选择列表中会使执行时间恢复正常(2秒)。您的执行计划显示什么?顺序是什么?(冷/热数据?)之所以发生这种情况,是因为SQL Server正在根据返回的列更改执行计划。为什么性能会变得更差可能是由于糟糕的表统计数据。这是不寻常的事情。@alroc几乎完全一样。我的意思是,没有任何改变可以证明这种差异的存在。事实上,这些改变与缓存中关于统计数据+不同计划的想法是一致的,因为声明是不同的。
SELECT
*
FROM dbo.vw_viewname as v
SELECT
v.column_name
FROM dbo.vw_viewname as v