Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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_Database_Tsql - Fatal编程技术网

Sql 选择*比选择列列表快

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秒)。您的执

我有一个复杂的数据库视图,它通过对数据库执行多个连接(左连接和内连接)返回26'404行,这里包括子查询中的一些列

我尝试运行两个查询:

(一)

(二)

第一次查询执行时间:0:00:40

第二次查询执行时间:0:02:13

当我从不同的数据库调用此视图时,时间上的差异更大,从那里执行join[0:00:02 VS 0:02:30]。(是的,2秒对2分钟)

有人能解释为什么会这样吗?我真的找不到任何合乎逻辑的理由


编辑:将子查询生成的视图列包含在选择列表中会使执行时间恢复正常(2秒)。

您的执行计划显示什么?顺序是什么?(冷/热数据?)之所以发生这种情况,是因为SQL Server正在根据返回的列更改执行计划。为什么性能会变得更差可能是由于糟糕的表统计数据。这是不寻常的事情。@alroc几乎完全一样。我的意思是,没有任何改变可以证明这种差异的存在。事实上,这些改变与缓存中关于统计数据+不同计划的想法是一致的,因为声明是不同的。
SELECT 
* 
FROM dbo.vw_viewname as v
SELECT 
v.column_name 
FROM dbo.vw_viewname as v