我读到了临时表,全局临时表和表变量.我理解它,但无法想象我必须使用它的情况.请详细说明何时应该使用临时表.
Jag*_*mag 16
使用临时表的最常见方案是在存储过程中.
如果存储过程中存在涉及无法在单个查询中完成的数据操作的逻辑,那么在这种情况下,一个查询/中间结果的输出可以存储在临时表中,然后通过连接参与进一步的操作等达到最终结果.
使用临时表的一个常见方案是存储SELECT INTO语句的结果
在大多数情况下,可以使用表变量相对较新(在SQL Server 2005中引入 - 据我所记得)代替临时表.这里讨论两者之间的一些差异
在很多情况下,特别是在OLTP应用程序中,在程序中使用临时表意味着您可能在数据库中有可能有业务处理逻辑,并且可能需要考虑重新查看您的设计 - 尤其是在n层的情况下系统在其应用程序中具有单独的业务层.
jve*_*zey 11
三者之间的主要区别在于寿命和范围.
通过一个全局表,我假设你的意思是一个标准的,磨机,表的运行.表用于存储持久数据.所有登录用户都可以访问它们.您所做的任何更改都对其他用户可见,反之亦然.
临时表仅用于在会话中存储数据.使用临时表的最佳时间是在SQL服务器中存储信息以便在多个SQL事务中使用时.像普通的表一样,你将创建它,与它交互(插入/更新/删除),当你完成后,你将丢弃它.表和临时表之间存在两个差异.
表变量的工作方式与SQL Server中的任何变量类似.这用于存储在单个事务中使用的数据.这是TSQL的一个相对较新的功能,通常用于在过程之间传递数据 - 比如传递数组.表和表变量之间有三个不同之处.
我个人避免使用临时表和表变量,原因有几个.首先,它们的语法是Microsoft特定的.如果您的程序要与多个RDBMS交互,请不要使用它们.此外,临时表和表变量倾向于增加某些SQL查询的复杂性.如果您的代码可以使用更简单的方法完成,我建议您使用简单的方法.