Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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 不使用';AS';关键字创建临时表?_Sql_Sql Server_Temp Tables - Fatal编程技术网

Sql 不使用';AS';关键字创建临时表?

Sql 不使用';AS';关键字创建临时表?,sql,sql-server,temp-tables,Sql,Sql Server,Temp Tables,我听说create table#tbname或create table#tbname在临时数据库中创建临时表。但是,下面的查询是否在临时数据库中创建临时表 Select * from (select * from table1) as temp; 由于各种原因,有些查询会在tempdb中创建工作表。使用示例中的派生表不是其中之一 如果您想更仔细地了解它的作用,可以使用设置统计io on并在SSMS中执行查询 set statistics io on select * from (selec

我听说
create table#tbname
create table#tbname
在临时数据库中创建临时表。但是,下面的查询是否在临时数据库中创建临时表

Select * from 
(select * from table1) as temp;

由于各种原因,有些查询会在tempdb中创建工作表。使用示例中的派生表不是其中之一

如果您想更仔细地了解它的作用,可以使用
设置统计io on
并在SSMS中执行查询

set statistics io on

select *
from (select * from T) as T
我的Messages选项卡中的输出为

表“T”。扫描计数1,逻辑读取3,物理读取0,预读 读取0,lob逻辑读取0,lob物理读取0,lob提前读取 读数为0

如果您在tempdb中的表中有任何活动,它将显示在那里

要查看子查询是否真的改变了某些内容,可以做的另一件事是查看查询计划,并可能比较使用子查询的查询和不使用子查询的查询的查询计划

select *
from (select * from T) as T

select * from T
这些查询的结果相同,执行计划也相同。SQL Server看穿了您的子查询,并意识到它可以简化

SQL是一种声明性语言,这意味着您要表达最终结果应该是什么,而不是SQL Server应该如何实现


然后是查询提示和其他一些东西,它们会对优化器如何生成查询计划产生一些影响。但这是另一个故事。

它不会创建临时表。它是一个子查询。那么选定的数据将与主存一起存储?那么CTE也会这么做,不是吗?这是新的你从哪里听说的it@MuthukumarPalaniappan-我不知道你问这个问题的目的是什么。您不能更改
temp
表格。它是由SQL server存储的临时结果集。你能改变
temp
?“下面的查询是否创建了一个temp表?”-简单明了:今天的noMy课程。。。SQL是一种声明性语言,这意味着您要表达最终结果应该是什么,而不是SQL Server应该如何实现+1.