gpt4 book ai didi

sql - 为什么 SQL 服务器插入这么慢?

转载 作者:行者123 更新时间:2023-12-04 14:16:05 24 4
gpt4 key购买 nike

我正在尝试将内存数据行插入 SQL Server Express 2005 上的表中。它的运行速度在我看来非常缓慢 - 每插入 1000 行大约 5 秒。我只是使用基本的“INSERT INTO”命令。缓慢与表数据无关 - 对于只有一个 int 列且没有索引的表,它仍然很慢。这与我的软件无关 - 它与 Management Studio 在循环中运行 SQL 的速度一样慢。没有其他东西同时访问数据库。在 3Ghz Xeon(我知道是旧的)上,这将需要大约 10 秒的时间来执行:

declare @i int  
set @i = 0
set nocount on
while @i < 2000
begin
insert into testdb(testcolumn)
values (1)
set @i = @i + 1
end

有没有比在 INSERT 上循环更好的方法来插入大量内存数据?或者我应该在 SQL Server 中更改一些配置?

最佳答案

您在其自己的事务中执行每个插入。

SQL Server 中开始和提交事务非常昂贵。

将所有内容封装到一个事务块中:

declare @i int
set @i = 0
set nocount on
BEGIN TRANSACTION
while @i < 2000
begin
insert into testdb(testcolumn)
values (1)
set @i = @i + 1
end
COMMIT

要生成示例数据,您可以使用递归 CTE :
WITH    q (num) AS
(
SELECT 1
UNION ALL
SELECT num + 1
FROM q
WHERE num < 2000
)
INSERT
INTO testdb(testcolumn)
SELECT 1
FROM q
OPTION (MAXRECURSION 0)

,这会更快。

关于sql - 为什么 SQL 服务器插入这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1743496/

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