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')
我尝试为每个18704
行使用一个INSERT
记录10
行。 时间是(mm:ss)
SELECT/UNION ALL
解决方案花了25:37
VALUES
解决方案花了27:26
这是出乎意料的,因为我希望SELECT/UNION ALL
解决方案会更慢,因为它是更明确的操作(SELECT
和UNION ALL
)。
值得注意的是,这种表现并不好,因为它可能是肯定的瓶颈是另一回事,但我想知道这两种形式之间是否存在显着差异。
答案 0 :(得分:1)
性能差异非常小。你不应该担心这些事情。
bulk insert
数据可能更快。
如果您的插页花费的时间很长,那么您还有其他问题,很可能是:
您可能只是在其他进程中对表进行了大量争用。
您可能希望将insert
拆分为较小的块。这样可以减少争用。