Sql Server2005数据库怎么查看视图里的字段。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sql Server2005数据库怎么查看视图里的字段。相关的知识,希望对你有一定的参考价值。
1.在SQLSERVER 管理器中选中视图点击右键选择设计,在设计画面中可以看到栏位及来源表,逻辑等2.在SQLSERVER 管理器中选中视图点击加号(+)展开,在栏位下可以看到
3.使用SQL语句,select * from 视图名,在结果中也可以看到栏位
楼上的 这3中方法都是比较直接 也比较正确
真正用sql 查询 视图字段
select name from syscolumns where id=object_id('视图名')
这样直接数据 就是视图的各个字段 参考技术A 1.在SQLSERVER 管理器中选中视图点击右键选择设计,在设计画面中可以看到栏位及来源表,逻辑等
2.在SQLSERVER 管理器中选中视图点击加号(+)展开,在栏位下可以看到
3.使用SQL语句,select * from 视图名,在结果中也可以看到栏位 参考技术B select * from 视图名,查看全部字段或者select 字段名 from 视图名,查看部分字段 参考技术C QQ 124033472. 远程干
sql server 排序查看结果慢
【中文标题】sql server 排序查看结果慢【英文标题】:Sql server sorting view results slow 【发布时间】:2018-03-07 14:22:48 【问题描述】:我有一个 SQL Server 数据库视图,它有很多内连接操作。此视图在执行选择操作时完美运行。它不是很快,但在合理范围内。
SELECT * FROM ViewName WHERE ItemId=1234
但是,当对该视图的结果进行排序时,性能下降到无法接受的低水平。
SELECT * FROM ViewName WHERE ItemId=1234 ORDER BY CompanyName
这似乎有点奇怪,因为当我在临时表上运行相同的查询时
SELECT * FROM ViewName INTO #temp WHERE ItemId=1234
SELECT * FROM #temp ORDER BY CompanyName
这非常快。
有没有办法在不使用临时表解决方案的情况下更快地对我的视图数据进行排序?所以要强制查询首先进行选择,然后进行排序。
【问题讨论】:
您可以发布代码以供您查看吗?以及它背后的表的定义,以及它们的索引? 你有CompanyName
的索引吗?如果不是,那么它很慢的原因是因为 SQL Server 必须检查每一行,并相应地对其进行排序。 @SeanLange 在 DDL 请求中击败了我。 :)
慢查询和快查询的执行计划有什么区别?
作为早上第一件事的猜测,添加 ORDER BY 会强制 Sql Server 持有一些锁的时间更长,从而产生争用,并在内存中维护整个结果集。但是我还没有喝完咖啡,所以我不会尝试修复它的建议,只是说与您的 ORDER BY 中的列匹配的索引可能会有所帮助。
我真的认为视图的查询需要优化,在临时表上会更快是有道理的,因为SQL Server对查询所做的临时表基本上只是通过where子句过滤并对其进行排序,但是在整个视图中,sql server 基本上会执行并检查基础表(您的视图查询),然后通过 where 子句对其进行过滤,然后对其进行排序。花了更长的时间
【参考方案1】:
您可以尝试一些变体,它们有时会提供更好的性能。真正的关键是在使用和不使用ORDER BY
运行查询时查看执行计划,看看有什么不同。
一种选择是使用子查询作为派生表:
SELECT *
FROM (
SELECT *
FROM ViewName
WHERE ItemId=1234
) AS dt
ORDER BY CompanyName
另一个选择是使用公用表表达式,如果可能的话,我总是更喜欢派生表,因为它们更具可读性:
WITH cte AS (
SELECT *
FROM ViewName
WHERE ItemId=1234
)
SELECT *
FROM cte
ORDER BY CompanyName
第三种选择是使用索引提示,强制它使用正确的索引。不过,我总是尽量避免使用这个选项,因为如果数据或结构发生变化,它可能会在未来引起问题。您可以在此处阅读有关索引提示的更多意见:
https://www.brentozar.com/archive/2013/10/index-hints-helpful-or-harmful/
【讨论】:
按照您建议的方式使用子查询或 CTE 不会对执行计划产生任何影响。有一个连接项请求查询提示以强制 CTE/派生表的中间具体化,但这尚未实现,并且连接已停用。我能找到的最接近的是:feedback.azure.com/forums/908035-sql-server/suggestions/… 使用子查询确实好像效果不大以上是关于Sql Server2005数据库怎么查看视图里的字段。的主要内容,如果未能解决你的问题,请参考以下文章
sql server 2005代码错误 提示插入错误: 列名或所提供值的数目与表定义不匹配。
急急急!应用程序在sql server2005里执行的sql语句怎样查看!