SQL Server - 在视图上选择列的内部查询是啥

Posted

技术标签:

【中文标题】SQL Server - 在视图上选择列的内部查询是啥【英文标题】:SQL Server - What is the internal query of selecting columns on a viewSQL Server - 在视图上选择列的内部查询是什么 【发布时间】:2018-07-07 23:24:40 【问题描述】:

如果我在视图中选择某些列,内部 SQL Server 将首先选择表/表的所有列,然后进行子查询?

例如:

名为 THEVIEW 的视图可能是:

Select id, LTrim(RTrim(Name)) as Name, Age, Age-1 as AgeMinus1 
From Persons

然后我会查询视图:

Select id, AgeMinus1
From THEVIEW

内部查询是这样的:

Select id, Age-1 as AgeMinus1 
From Persons

或者这个(然后只显示 id,AgeMinus1:

Select id, LTrim(RTrim(Name)) as Name, Age, Age-1 as AgeMinus1 
From Persons

谢谢大家!!!

【问题讨论】:

【参考方案1】:

如果你想查看 SQL 的内部运作,你需要使用 SQL server profiler,它可以非常直接地跟踪查询,建议你使用用户名过滤器或类似的东西,否则你会被大量的数据淹没。

这里有一个关于如何运行它的link,如果您查询视图,您将看到由 SQL 生成的相应查询。

【讨论】:

我试过了,但 SQL Profiler 会向您显示对视图的查询...无论如何谢谢

以上是关于SQL Server - 在视图上选择列的内部查询是啥的主要内容,如果未能解决你的问题,请参考以下文章

在一列上选择 DISTINCT,返回多个其他列(SQL Server)

在一列上选择 DISTINCT,返回多个其他列(SQL Server)

如何列出 VIEW 中列的源表名 (SQL Server 2005)

SQL Server创建视图——视图的作用

如何在sqlserver中获取表的所有列信息

需要从不包含隐藏 graph_id 列的 SQL Server Graph Table 创建视图