SQL Server ->> WITH RESULT SETS子句
2016-01-28 01:06
302 查看
SQL Server 2012对EXECUTE子句引入了WITH RESULT SETS选项,用于对EXECUTE语句执行的存储过程或者动态语句结果进行一个指定数据类型的转换,这样可以避免一种情况就是需要用临时表存储后再转换成目标表的数据字段类型,或者需要用OPENQUERY去转换。
用法:
上面结果会报错,因为类型无法转换成功
执行计划并没有多出类型转换多出的操作符/步骤
那么这种转换会不会多出很多CPU时间呢,毕竟要转换。那我们把行数调整为10000行来观察下
没有加上WITH RESULT SETS
加上WITH RESULT SETS
用法:
IF EXISTS(SELECT * FROM sys.procedures WHERE name = 'usp_TestWithResultSets' AND schema_id = schema_id('dbo')) DROP PROCEDURE dbo.usp_TestWithResultSets GO CREATE PROCEDURE dbo.usp_TestWithResultSets AS BEGIN SET NOCOUNT ON SELECT Num AS INT_COL, CHAR(NUM+64) AS STR_COL FROM dbo.Numbers WHERE NUM<=26 END GO EXEC dbo.usp_TestWithResultSets WITH RESULT SETS ( ( COL1 INT NOT NULL, COL2 INT NOT NULL ) )
上面结果会报错,因为类型无法转换成功
Msg 8114, Level 16, State 2, Procedure usp_TestWithResultSets, Line 25 Error converting data type char(1) to int.
执行计划并没有多出类型转换多出的操作符/步骤
那么这种转换会不会多出很多CPU时间呢,毕竟要转换。那我们把行数调整为10000行来观察下
没有加上WITH RESULT SETS
SQL Server parse and compile time: CPU time = 0 ms, elapsed time = 0 ms. SQL Server parse and compile time: CPU time = 0 ms, elapsed time = 0 ms. SQL Server Execution Times: CPU time = 0 ms, elapsed time = 0 ms. SQL Server Execution Times: CPU time = 0 ms, elapsed time = 173 ms. SQL Server Execution Times: CPU time = 0 ms, elapsed time = 173 ms.
加上WITH RESULT SETS
SQL Server parse and compile time: CPU time = 0 ms, elapsed time = 0 ms. SQL Server parse and compile time: CPU time = 0 ms, elapsed time = 0 ms. SQL Server Execution Times: CPU time = 0 ms, elapsed time = 0 ms. SQL Server Execution Times: CPU time = 125 ms, elapsed time = 384 ms. SQL Server Execution Times: CPU time = 125 ms, elapsed time = 384 ms.
相关文章推荐
- 运用Log和Trace文件排除Oracle Net问题
- 深入mysql "ON DUPLICATE KEY UPDATE" 语法的分析
- SQL Server ->> PARSE函数
- MongoDB学习领悟: 文档的书写是基于K-V的map演算形式
- mongodb中最为简单的一种安装方法
- SQL Server ->> 时间函数: EOMONTH, DATEFROMPARTS, TIMEFROMPARTS, DATETIMEFROMPARTS, DATETIMEOFFSETFROMPARTS
- MongoDB 数据类型
- Nutch+MongoDB+ElasticSearch+Kibana 搭建搜索引擎
- SQL 视图
- mongodb 特殊作用的数据库
- SQL Server ->> CONCAT函数
- mysql 5.7.10安装配置
- MongoDb web 用户界面
- mysql5.7.10安装
- Memcached, Redis, MongoDB区别
- MyBatis参数传入集合之foreach动态sql
- MySQL恢复中的几个问题解决方法
- 数据库及连接池若干问题特集
- Windows 64位下安装Redis详细教程
- Redis+Mysql模式和内存+硬盘模式的异同