【问题标题】:Table-Valued Parameter versus multiple Insert rows performance question for inserting into SQL Server 2008表值参数与插入 SQL Server 2008 的多个插入行性能问题
【发布时间】:2010-11-29 21:56:28
【问题描述】:

如果我所做的只是将多行数据插入到 SQL Server 2008 中的单个表中,哪个更快?

Table-Valued Parametera single insert statement with multiple values

在这个简单的场景中,您更喜欢哪一种?

【问题讨论】:

  • 我实际上根本不是在谈论存储过程或表值函数,而是表值参数。这可能会被传递给存储过程或函数,或用于临时查询。
  • 你在这里想到了什么?
  • 我最终选择了表值参数路由,只是为了理智。我想我应该进行一些速度测试以获得更好的答案

标签: sql sql-server tsql sql-server-2008


【解决方案1】:

如果我正确理解了这个问题,我会选择表值参数。否则我会认为参数列表很快就会变得难以管理。你不希望得到类似的结果:

insert into YourTable
    (col1, col2, ..., colN)
    values
    (@Row1Col1, @Row1Col2, ..., @Row1ColN),
    (@Row2Col1, @Row2Col2, ..., @Row2ColN),
    ...
    (@RowMCol1, @RowMCol2, ..., @RowMColN)

【讨论】:

  • 嗯,不,我不想输入它,但无论如何它都会以编程方式组装。我正在尝试找出哪个(如果有的话)实际上更有效。
【解决方案2】:

由于这两个操作都会将数据插入到表中,问题就变成了; “使用存储过程进行表插入的开销对于我的系统来说是否太多了?”

您的系统现在允许从应用程序直接插入表格吗?如果是,那么直接插入即可。

我更喜欢使用存储过程,因为它允许我添加审计、错误逻辑等,这让我感觉比直接将数据转储到表中更好。

【讨论】:

    猜你喜欢
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    相关资源
    最近更新 更多