我读过关于临时表,全局临时表和表变量的信息。我理解它,但无法想象当我必须使用它时的一个条件。请详细说明我应该何时使用临时表。何时使用SQL Server 2005中的临时表
11
A
回答
12
使用临时表最常见的情况是来自存储过程。
如果在存储过程中存在涉及操作无法在单个查询中完成的数据的逻辑,那么在这种情况下,可以将一个查询/中间结果的输出存储在临时表中,该临时表然后参与通过连接等进一步操作来实现最终结果。
一个在使用临时表常见的情形是存储SELECT INTO语句的结果
表变量是相对较新的(在SQL Server 2005中引入的 - 只要我还记得)可以代替使用临时表中最例。两者之间的一些分歧进行了讨论here
在很多情况下,尤其是在OLTP应用程序,你的程序内的临时表的使用意味着你MAY可能有业务处理逻辑数据库和可能是一个考虑因素您可以重新审视您的设计 - 特别是在n层系统的应用程序中具有单独的业务层的情况下。
9
三者之间的主要区别在于生命和范围。
通过一张全球表格,我假设你的意思是一个标准的磨机表格。表格用于存储持久性数据。所有登录用户都可以访问它们。您所做的任何更改对其他用户都可见,反之亦然。
临时表仅用于在会话中存储数据。使用临时表的最佳时机是当您需要在SQL服务器中存储信息以用于多个SQL事务时。与普通表一样,您将创建它并与之交互(插入/更新/删除),当完成时,您将放弃它。表和临时表之间有两点区别。
- 临时表只对您可见。即使其他人创建了一个具有相同名称的临时表,其他人也无法看到或影响临时表。
- 只要您登录,临时表就存在,除非您明确地删除它。如果您注销或断开连接,SQL Server将自动为您清理它。这也意味着数据不是持久的。如果您在一个会话中创建临时表并注销,则在您重新登录时它不会存在。
表变量的工作方式与SQL Server中的任何变量一样。这用于存储用于单个事务的数据。这是TSQL的一个相对较新的功能,通常用于在过程之间传递数据 - 例如传递数组。表格和表格变量之间有三点区别。
- 像临时表一样,它只对您可见。
- 因为它是一个变量,所以它可以在存储过程之间传递。
- 临时表只存在于当前事务中。一旦SQL Server完成一个事务(使用GO或END TRANSACTION语句)或超出范围,它将被释放。
我个人避免使用临时表和表变量,原因有几个。首先,它们的语法是Microsoft特定的。如果您的程序要与多个RDBMS进行交互,请不要使用它们。此外,临时表和表变量有增加某些SQL查询复杂性的倾向。如果你的代码可以使用更简单的方法完成,我建议使用简单的方法。
相关问题
- 1. SQL Server 2005临时表
- 2. SQL Server 2005和临时表范围
- 3. 使用SQL Server临时表
- 4. sql 2005中的临时表和事务
- 5. SQL Server中的临时表用法
- 6. SQL Server 2005中的临时表不会自动丢失
- 7. 动态SQL中的临时表(SQL-Server)
- 8. 在SQL Server 2005中输出到临时表
- 9. SQL Server联合临时表
- 10. 临时表SQL Server等
- 11. SQL Server 2005:临时禁用触发器的T-SQL
- 12. 全局临时表中的Microsoft SQL Server
- 13. 在SQL Server中的XML列临时表
- 14. 从SQL Server中的临时表创建临时视图
- 15. 临时表和表变量之间的区别在SQL 2005中
- 16. Microsoft SQL Server 2005检查临时表是否空
- 17. SQL Server:如何插入临时表? ?
- 18. 在SQL Server 2008中使用动态sql构建临时表
- 19. 在SQL Server 2005/2008中创建一个类似当前表的临时表
- 20. SQL Server表变量VS临时表
- 21. SQL Server 2000临时表与表变量
- 22. 不知道临时表时使用SQL Server执行
- 23. SQL Server的XML分解到临时表
- 24. SQL Server临时表的性能开销
- 25. SQL Server WHERE子句使用临时列
- 26. 当使用sql server 2005时触发器
- 27. EXEC选择查询不能与临时表中的SQL Server 2005工作
- 28. 使用Excel宏(ADODB)在SQL Server 2008中创建临时表
- 29. 临时表和SQL Server复制
- 30. SQL Server选择Where LIKE(临时表值)