在SQL Server中使用临时表的视图有什么好处

时间:2013-01-21 16:02:17

标签: sql sql-server tsql

使用临时表的视图有什么好处。我知道如果数据被其他存储过程重用,你应该使用一个视图,但是:

  1. 在性能方面,使用视图比使用临时表更好吗?

  2. 如果基于不断更新视图的表是一个视图还是比临时表更好吗?

  3. 如果我必须对视图使用where子句,我最好使用临时表吗?

  4. 最后,使用视图或临时表有哪些优点/缺点?

3 个答案:

答案 0 :(得分:10)

要辨别,请问自己是否需要重复使用这些信息:

  • 一个视图是一个美化的SELECT,它主要是为了方便而使用
  • 您可以对视图进行materizalize,即将其存储为表格甚至索引。见question
  • 如果您不会多次重复使用该结构,请使用临时表,例如在不时运行的脚本中
  • 视图将占用空间(特别是如果已实现)并且难以维护许多视图

还要注意如何销毁临时表:

  • 如果你创建一个临时表#tbl,当它超出范围时(例如在脚本的末尾)它将被销毁。
  • 但是你可以创建一个像## tbl这样的临时表(有两个#),它会在连接结束时被销毁。

答案 1 :(得分:4)

  1. 通常,是的,因为视图只是一个存储的选择,而临时表需要使用一些tempdb。

  2. 在这一点上,它没有任何区别。视图不会保留 - 它们会从基表返回数据。

  3. 也没有区别。

  4. 视图是持久的(也就是说,select语句的文本是持久的) - 它们为您提供了一个数据库层,允许您在不影响使用视图的客户端的情况下更改数据库。

答案 2 :(得分:1)

你正在混合想法

视图是封装逻辑,仅此而已,它有助于代码重用 临时表是存放数据的真实物理存储

你不能比较这两者,因为它们都有不同的应用

我不喜欢一般使用视图:)