博客 > SQL知识:SQL临时表定义、分类及示例
浏览量:1155次评论:0次
作者:锐成网络整理时间:2024-06-03 17:56:33
在SQL开发中,临时表是一种非常实用的工具,可以在不影响数据库结构的情况下临时存储数据、加快查询速度、简化复杂的SQL操作。本文将深入探讨SQL临时表的定义、分类和示例。
一、临时表定义
临时表与实体表类似,只是在使用过程中,临时表是存储在系统数据库tempdb中。当我们不再使用临时表的时候,临时表会自动删除。
二、临时表分类
临时表分为本地临时表和全局临时表,它们在名称、可见性以及可用性上有区别。
三、临时表的特性
对于临时表有如下几个特点:
四、本地临时表
本地临时表的名称以单个数字符号"#" 打头;它们仅对当前的用户连接(也就是创建本地临时表的connection)是可见的;当用户从 SQL Server 实例断开连接时被删除。
本地临时表实例
我们以Customers表为实例,表数据如下:
Customers
我们新建一个连接,每当“新建查询”就代表打开了一个连接,连接的ID就是sa后面的数字,我们的这个连接ID是57.
下面我们在这个查询页面建立一个临时表。
SELECT * INTO #Customers FROM Customers
这样我们就建好了一个临时表,可以查询一下临时表#Customers的数据。与Customers内容一致。
SELECT * FROM #Customers
如果我们再打开一个页面,同样查询#Customers表会怎么样呢?
我们在新开的查询页面执行上述查询语句,得到的结果如下:
说明本地临时表不支持跨连接查询。只能在当前连接(或者当前查询页面)访问。
那本地临时表具体在什么地方呢?它又是怎么存放的呢?
这就是我们刚才建立的临时表,在系统中并不是用#Cusomters这样的表名来表示的。
五、全局临时表
全局临时表的名称以两个数字符号 "##"打头,创建后对任何数据库连接都是可见的,当所有引用该表的数据库连接从 SQL Server 断开时被删除。
全局临时表实例
我们还是按照上面的步骤走一遍
先打开一个查询页面,输入如下查询语句:
SELECT * INTO ##Customers FROM Customers
执行完上面的查询语句后,我们关掉查询页面,再重新开一个页面查询##Customers中的内容
SELECT * FROM ##Customers
结果如下:
此时并不会像本地临时表那样报错了。
全局临时表的位置如下:
它的名称与我们自定义的名称一致,系统不会额外添加其他信息。
六、临时表的用途
介绍完临时表,我们来说说如何用它来进行优化
临时表的优化一般使用在子查询较多的情况下,也称为嵌套查询。我们写如下子查询:
SELECT * FROM sales.Temp_Salesorder
WHERE SalesOrderDetailID IN
(SELECT SalesOrderDetailID
FROM sales.SalesOrderDetail
WHERE UnitPrice IN
(SELECT UnitPrice
FROM sales.SalesOrderDetail
WHERE UnitPrice>0)
)
这是一个比较简单的两层嵌套子查询,我们看一下执行情况:
可以看到这里的逻辑读取是比较高的。
我们用临时表重新来看下执行情况如何,我们将第一二层的查询结果插入到#temp中,然后从临时表中查询结果。
SELECT SalesOrderDetailID INTO #temp
FROM sales.SalesOrderDetail
WHERE UnitPrice IN
(SELECT UnitPrice
FROM sales.SalesOrderDetail
WHERE UnitPrice>0)
SELECT * FROM sales.Temp_Salesorder
WHERE SalesOrderDetailID IN
(SELECT SalesOrderDetailID FROM #temp)
执行情况如下:
相比上一次的逻辑读,成倍的减少了逻辑读取次数。
在对查询的性能进行调节时,如果逻辑读值下降,就表明查询使用的服务器资源减少,查询的性能有所提高。如果逻辑读值增加,则表示调节措施降低了查询的性能。
在其他条件不变的情况下,一个查询使用的逻辑读越少,其效率就越高,查询的速度就越快。
因此我们可以看出临时表在比较复杂的嵌套查询中是可以提高查询效率的。
在实际的SQL开发中,合理地使用临时表可以提高查询性能、简化操作流程,是提升工作效率的利器。
重要声明:本文来自SQL数据库开发,经授权转载,版权归原作者所有,不代表锐成观点,转载的目的在于传递更多知识和信息。
相关文章推荐
2024-08-20 17:58:16
2024-08-19 17:49:29
2024-08-19 10:23:28
2024-08-16 17:06:33
2024-08-15 17:22:55
热门工具
标签选择
阅读排行
我的评论
还未登录?点击登录