TVP批量插入数据
2015-08-26 18:56
232 查看
1. Sql2008 使用TVP批量插入数据 - BarneyZhang - 博客园
http://www.cnblogs.com/zhxhdean/archive/2013/07/28/3220732.html2. 优点
表值参数具有更高的灵活性,在某些情况下,可比临时表或其他传递参数列表的方法提供更好的性能。表值参数具有以下优势:(1)首次从客户端填充数据时,不获取锁。
(2)提供简单的编程模型。
(3)允许在单个例程中包括复杂的业务逻辑。
(4)减少到服务器的往返。
(5)可以具有不同基数的表结构。
(6)是强类型。
(7)使客户端可以指定排序顺序和唯一键。
3. 限制
表值参数有下面的限制:(1) SQL Server 不维护表值参数列的统计信息。
(2) 表值参数必须作为输入 READONLY 参数传递到 Transact-SQL 例程。
不能在例程体中对表值参数执行诸如 UPDATE、DELETE 或 INSERT 这样的 DML 操作。 ***如果想要修改那些已经传入到存储过程或参数化语句中的表值型参数中的数据,只能通过向临时表或表变量中插入数据来实现。
(3) 不能将表值参数用作 SELECT INTO 或 INSERT EXEC 语句的目标。
表值参数可以在 SELECT INTO 的 FROM 子句中,也可以在 INSERT EXEC 字符串或存储过程中。
4. 性能
自己写代码实验了一下TVP跟普通SP的效率,发现确实性能提升很大。插入10000条数据,TVP只用了0.421s,而普通SP则用了77s,不是一个数量级呀
注意:表值参数增加列时,代码中传入的dataTable的构建也要做相应的修改,列数必须保持完全一致,否则会报错。
相关文章推荐
- hdu2112- HDU Today
- SQLSERVER 获取datetime日期的查询语句
- HLG1125 循环小数2
- 手机乱战误导消费者,渠道“规范化”成解决方案
- 【Ubuntu】ubuntu更新设置
- POJ3261
- JSP通过URL传递中文参数乱码的问题
- linux ftp
- document.all的用法详解
- ios使用XMPPFramework框架的配置
- js 检测区分 android ios设备
- c++ 时间类型详解 time_t
- UESTC 594 我要长高 单调队列优化DP
- 引用三方Dll时,产生“does not have a strong name”错误
- Socket多线程编程 serversocket服务器多线程编程
- 这些年的项目管理心得
- 极大似然估计与最小二乘法
- Spinner下拉列表
- 自学QT之QStringListModel
- 【黑马程序员】Foundation框架-NSMutableString