sql - 多个插入与具有多个值的一个插入

标签 sql sql-server

我知道过去有人问过这个问题,但我需要更具体地了解网络的性能。

我需要通过网络同时发送 1 到 100 行,我需要一个具体的答案来确定哪种方法更适合我的情况。另外,如果许多客户端将同时运行此查询,哪种方法更合适?

对我的项目来说更重要的是执行速度。

在我的结果中,没有区别。 Α 多值插入快一点,执行速度快一点。但是我需要知道是否有任何陷阱或我需要为这些查询防止的东西。

提前谢谢你。

例子

INSERT INTO Customers (Name, Age, Active) ('Name1',21,1)
INSERT INTO Customers (Name, Age, Active) ('Name2',21,1)

对比

INSERT INTO Customers (Name, Age, Active) ('Name1',21,1),
                                          ('Name2',21,1)

我忘了说它们是简单的插入。

最佳答案

一次插入与多次插入:

  • 一次 insert 会快一点,因为查询只需要解析一次。
  • 如果每个语句都是独立提交的(默认设置),那么单个 insert 会快得多,因为它只有一次提交。
  • 如果一条记录插入失败,则所有记录都将在一次插入 中失败。对于多个插入,有些可能会成功 (.
  • 表上的插入触发器应构建为同时处理多行。这是评论,但不会影响性能。

我的猜测是,在您的情况下,性能差异非常小,但值得衡量。如果您同时有很多行并且您的表结构包含多个索引,这可能会变得很重要。

关于sql - 多个插入与具有多个值的一个插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51369170/

相关文章:

mysql - Having 子句不适用于 MySQL 中的连接

mysql - "You can' t 在 FROM 子句中指定目标表 't1' 进行更新。如何删除行?

php - Yii2 数据库连接 - PDOException

c# - 如何在 VS2012 中创建本地数据库缓存?

php - 使用事务锁定表,在同一事务中删除然后插入

sql - 尝试选择行并包括来自 4 列的前 2 个不同的非空值

sql - UNPIVOT/PIVOT 将多个记录合并为一个

sql - 计算负载并避免光标

sql - 如何让 MySql 使用 "["作为引号字符?

sql-server - 使用 NHibernate(和 Fluent NH)以优于秒的精度(并且不截断毫秒)映射日期时间类型版本列