【问题标题】:What are the downsides to Table Valued Parameters in Stored Proc?存储过程中的表值参数有什么缺点?
【发布时间】:2011-08-20 05:40:21
【问题描述】:

我曾使用过各种版本的 MS SQL Server,包括 2000、2005、2008、R2、(Some)Denali。我从来没有对像存储过程中的表值参数这样的新功能如此兴奋。我也进行 C# 开发,并且正在挖掘 TVP,我使用它来最大限度地减少来自前端应用程序的数据库调用次数。

现在我真正的问题是使用表值参数有什么缺点。它几乎好得令人难以置信。

请分享您的想法。另外,我不想太深入地使用它而不得不改变。

【问题讨论】:

  • 无 - 除了它仅在 SQL Server 2008 和更高版本中可用......
  • 您可能对此感兴趣。 sommarskog.se/arrays-in-sql-2008.html
  • 它们是只读的,很多人不喜欢这样。此外,Mikael 发布的 Erland 的文章也有一些关于 TVP 的好信息。
  • 感谢大家的回复。我确实阅读了仅就绪和 1000 行性能的限制,但我的理解是与 TVP 限制相比,个人往返 db 的成本更高?

标签: sql-server tsql sql-server-2008 table-valued-parameters


【解决方案1】:

表值参数几乎没有实际的缺点。

好处

  • 频繁使用时缓存
  • 非常有效地促进批量插入
  • 减少到服务器的往返次数

缺点:

  • SQL Server 不维护 TVP 列的统计信息
  • 只读
  • 不能用作“Select Into”或“Ins​​ert Exec”语句的目标
  • 仅适用于 Sql Server 2008 及更高版本

参考文献

【讨论】:

  • 另一个缺点是缺少alter 类型定义的可能性。如果你创建它一次它保持不变直到你删除它,但要删除它,你必须删除所有引用该类型的对象,即所有使用该类型的存储过程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多