多种临时表效率的对比分析

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 多种临时表效率的对比分析老帅(20141107)平时在写存储过程的时候,经常会用到临时表,而临时表的用法到底有几种,哪种效率更好呢?我们来做个对比分析。
多种临时表效率的对比分析
老帅(20141107)
平时在写存储过程的时候,经常会用到临时表,而临时表的用法到底有几种,哪种效率更好呢?我们来做个对比分析。
实验数据:表a有400万条记录,只查询一个字段Title

1.  直接查询
--开启时间分析
SET STATISTICS TIME ON 
GO
--查询
SELECT Title FROM a 
--结果
SQL Server 执行时间:占用时间 = 22013 毫秒。

2.变量表
--开启时间分析
SET STATISTICS TIME ON 
GO
--插入
DECLARE @tmpA TABLE
(
 Title VARCHAR(200)
)
INSERT INTO @tmpA
SELECT Title FROM a
--查询
SELECT * FROM @tmpA
--结果
SQL Server 执行时间: 占用时间 = 22913 毫秒。

3.临时表
--开启时间分析
SET STATISTICS TIME ON 
GO
--插入
CREATE TABLE #tmpA
(
 Title VARCHAR(200)
)
INSERT INTO #tmpA
SELECT Title FROM a
--查询
SELECT * FROM #tmpA
--结果
SQL Server 执行时间: 占用时间 = 22743 毫秒。

4.不创建临时表,直接插入到临时表
--开启时间分析
SET STATISTICS TIME ON 
GO
--插入
SELECT * INTO #tmpA  
FROM
(SELECT Title FROM a) AS b
--查询
SELECT * FROM #tmpA
--结果
SQL Server 执行时间:  占用时间 = 22671 毫秒。

5.使用WITH AS临时表
--开启时间分析
SET STATISTICS TIME ON;
--插入
WITH tmpA AS
(
SELECT Title FROM a
)
--查询
SELECT * FROM tmpA
--结果
SQL Server 执行时间: 占用时间 = 22188 毫秒。

通过以上的分析,很容易看出哪种方法效率更高了。 在存储过程中尽量使用临时表来存储临时数据,不要使用变量表。

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
6月前
|
缓存 关系型数据库 MySQL
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
1041 0
|
JavaScript 前端开发 API
【项目数据优化三】长列表数据优化
【项目数据优化三】长列表数据优化
128 0
|
SQL 存储 监控
为什么我建议需要定期重建数据量大但是性能关键的表
为什么我建议需要定期重建数据量大但是性能关键的表
为什么我建议需要定期重建数据量大但是性能关键的表
|
SQL 存储 关系型数据库
如何通过索引让 SQL 查询效率最大化
如何通过索引让 SQL 查询效率最大化
99 0
如何通过索引让 SQL 查询效率最大化
|
SQL 存储 索引
|
SQL 关系型数据库 数据库
大量使用临时表带来的问题,替代方案,以及如何擦屁股
以前有使用Greenplum的朋友遇到元表膨胀的问题,总结了原因写了一篇文章如下。建议先阅读这篇文档,再阅读本文,里面有些原理我在本文就不讲了。http://blog.163.com/digoal@126/blog/static/1638770402014616113353555 近日,又有使用P
6748 0