SQL性能/从同一个表中的View中选择数据和来自View的相同数据的优点

时间:2013-04-18 12:07:49

标签: sql-server

为什么建议从特定表的View中选择数据,而不是直接从表中选择。

例如。我有

select * from table1 --Not recommended

create view test (

select * from table1

) 


select * from view - Recommended.

是因为锁定问题还是(使用mssql 2008 R2)

2 个答案:

答案 0 :(得分:1)

通常建议视图

  • 隐藏基础表格结构,即计算列或已转换的列等,
  • 在粒度级别管理访问权限,即仅授予对表中某些列的访问权限

答案 1 :(得分:1)

我从未见过这个建议 - 来源会很好!

正如Vikdor所说,有理由使用视图 - 安全性,并抽象出基础数据的逻辑;它们对性能没有影响。

实际上,您的示例将被视为反模式,因为视图不会自动识别对基础表的更改;每次更改“table1”时,都必须重新创建视图。

我还看到了一些查询优化器因访问视图而感到困惑的情况,结果查询比查询基表慢。这是高度平台和版本特定的,但对于复杂的查询,它可能是一个问题。

物化视图可能具有性能优势,尤其是在视图存储复杂计算时。