我终于让我的插入批次工作了,现在我一直在摆弄批次的大小,但我看不出值 50 和值 10000 之间的性能差异。这似乎很奇怪我,但我不知道幕后发生了什么,所以这可能是正常行为。
我将 160k 行插入到一个表中,我的测试值的平均时间是 115 +/- 2 秒。没有批处理需要 210 秒,所以我对改进非常满意。目标表是:
CREATE TABLE [dbo].[p_DataIdeas](
[wave] [int] NOT NULL,
[idnumber] [int] NOT NULL,
[ideaID] [int] NOT NULL,
[haveSeen] [bit] NOT NULL CONSTRAINT [DF_p_DataIdeas_haveSeen] DEFAULT ((0)),
CONSTRAINT [PK_p_DataIdeas] PRIMARY KEY CLUSTERED
(
[wave] ASC,
[idnumber] ASC,
[ideaID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY]
) ON [PRIMARY]
我阅读了设置 UpdateBatchSize 时要查找的内容,答案是简单地测试几个不同的值。我可以理解,但是如果您知道表设计、SQL 问题和即将插入的数据,是否应该可以计算或至少猜测一个好的值?
有没有人可以推荐的最佳实践?