110,534
社区成员
发帖
与我相关
我的任务
分享
for (int i = 1; i < 100000; i++)
{
sqlCmd += "insert into dbo.Time(ID,Time) values(" + i.ToString() + ",'1');";
}
using (SqlConnection conn = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(sqlCmd, conn))
{
conn.Open();
int row = cmd.ExecuteNonQuery();
}
}
你试着将sqlCmd定义成StringBuilder看看,
StringBuilder sqlCmd = new StringBuilder();
for (int i = 1; i < 100000; i++)
{
sqlCmd.Append("insert into dbo.Time(ID,Time) values(" + i.ToString() + ",'1');");
}
看效果会不会好点,其实这种循环10万次生成insert脚本,然后发送给数据库处理这种方式本来就不太可取,虽然要实现的效果是一样的,但不同的处理方式使得用户的体验也完全不一样。
GO
DECLARE @i INT =1
WHILE 1=1
BEGIN
IF @i>100000
BREAK
INSERT INTO t_Time(ID,[Time]) VALUES(@i, '1')
SET @i=@i+1
END
INSERT INTO t_time
SELECT n,
n
FROM (
SELECT X.NUMBER * 2048 + Y.NUMBER AS N
FROM (
SELECT DISTINCT NUMBER
FROM MASTER.dbo.spt_values
WHERE NAME IS NULL
) X
JOIN (
SELECT DISTINCT NUMBER
FROM MASTER.dbo.spt_values
WHERE NAME IS NULL
) Y
ON 1 = 1
) a
WHERE n <= 100000 AND n > 0