SQL Server 中的标准视图和索引视图有什么区别

use*_*365 7 database-design sql-server materialized-view

我了解到索引视图保存来自基表的数据,而标准视图不保存数据。这是否意味着索引视图需要内存而标准视图不需要?

索引视图需要与架构对象绑定。我也对架构绑定对象中不允许使用“*”这一点感到困惑。例如:

create view viewname as select * from tablename
Run Code Online (Sandbox Code Playgroud)

上面的说法是行不通的。为什么?

gbn*_*gbn 14

  • 索引视图物理存储(“物化”)在磁盘上 = 需要内存
  • 标准视图只是一个可扩展的宏:没有数据的持久性,并且始终使用基表

其他注意事项:

  • 两者都将从基表中返回正确的数据
  • SQL Server 会考虑是使用索引视图还是像宏一样扩展它(取决于版本和 NOEXPAND 提示)

SELECT *无论如何都是不好的做法,但这*意味着您无法根据索引视图的要求限定所有列