作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在 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
解决方案会更慢,因为它是更明确的操作(SELECT
和 UNION ALL
).
值得注意的是,这种性能并不像它可能的那样好,当然瓶颈是另一回事,但我想知道这两种形式之间是否存在显着差异。
最佳答案
性能差异将非常小。你不应该担心这些事情。
批量插入
数据可能会更快。
如果您的插入需要那么长时间,那么您还有其他问题,很可能是:
您可能只是在 table 上与其他进程有很多争用。
您可能希望将 insert
分成更小的 block 。这将减少争用。
关于sql - 哪个 INSERT 更快 : with VALUES or with SELECT/UNION ALL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49413625/
我是一名优秀的程序员,十分优秀!