gpt4 book ai didi

sql - 哪个 INSERT 更快 : with VALUES or with SELECT/UNION ALL?

转载 作者:搜寻专家 更新时间:2023-10-30 23:30:43 25 4
gpt4 key购买 nike

在 SQL Server 中,哪个包含多行的 INSERT 语句更快?

这个?

INSERT INTO dbo.MyTable (ID, Name)
SELECT 123, 'Timmy' UNION ALL
SELECT 124, 'Jonny' UNION ALL
...
SELECT 925, 'Sally'

还是这个?

INSERT INTO dbo.MyTable (ID, Name) VALUES
(123, 'Timmy'),
(124, 'Jonny'),
...
(925, 'Sally')

我尝试为每 10 行使用一个 INSERT 来记录 18704 行。 时间以 (mm:ss) 为单位

  • SELECT/UNION ALL 解决方案花费了 25:37
  • VALUES 解决方案花费了 27:26

这是出乎意料的,因为我希望 SELECT/UNION ALL 解决方案会更慢,因为它是更明确的操作(SELECTUNION ALL).

值得注意的是,这种性能并不像它可能的那样好,当然瓶颈是另一回事,但我想知道这两种形式之间是否存在显着差异。

最佳答案

性能差异将非常小。你不应该担心这些事情。

批量插入数据可能会更快。

如果您的插入需要那么长时间,那么您还有其他问题,很可能是:

  • 表争用(表被其他进程锁定)。
  • table 上的触发器。
  • 很多索引开销。
  • 使用复杂的用户定义函数检查约束。

您可能只是在 table 上与其他进程有很多争用。

您可能希望将 insert 分成更小的 block 。这将减少争用。

关于sql - 哪个 INSERT 更快 : with VALUES or with SELECT/UNION ALL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49413625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com