用什么?查看或临时表

rue*_*edi 42 sql sql-server view temp-tables

我有一个问题来决定是使用视图还是临时表.

我有一个存储过程,我从程序调用.在该SP中,我将长查询的结果存储在临时表中,命名列并在该表上进行另一个查询,将结果存储在标签或网格视图或其他内容中,然后删除临时表.我还可以将查询结果存储在视图中并对该视图进行查询.那么什么是更好或者在什么情况下我必须使用VIEW/Temp表.

根据我的研究,视图具有以下优点:安全性,简单性和列名称规范.我的临时表也完成了所有这些(根据我的意见).

Gor*_*off 45

如果查询是"长"并且您正在访问多个查询的结果,那么临时表是更好的选择.

总的来说,一种观点只是一种select陈述的捷径.如果并不意味着结果被运行和处理.如果使用视图,则每次使用时都需要重新生成结果.虽然后续运行视图可能更有效(例如,因为视图查询使用的页面在缓存中),但临时表实际上存储结果.

在SQL Server中,您还可以使用表变量(declare @t table . . .).

在单个存储过程中使用临时表(或表变量)似乎在安全性,简单性和列名方面几乎没有任何含义.安全性将通过访问存储过程来处理.两种解决方案都需要列名.没有更多信息,简单性很难判断,但没有什么特别复杂的东西.


KM.*_*KM. 9

要看

视图必须在每次运行时复制"长查询"的处理,而临时表存储结果.

那么你想使用更多的处理或更多的存储?

您可以存储一些可能有助于处理的视图值(持久索引),但是您没有提供足够的信息来真正探索它.

如果您只是在单个过程调用中讨论存储数据以供使用,那么临时表就是您的选择.


小智 6

我还想提一下,对于临时表,

在同一个查询中不能多次引用 TEMPORARY 表。

这使得临时表在您想对其使用自联接的情况下不方便。