【发布时间】:2014-04-15 15:13:10
【问题描述】:
这是我的 sql 脚本
CREATE TABLE dbo.calendario (
datacal DATETIME NOT NULL PRIMARY KEY,
horautil BIT NOT NULL DEFAULT 1
);
-- DELETE FROM dbo.calendario;
DECLARE @dtmin DATETIME, @dtmax DATETIME, @dtnext DATETIME;
SELECT
@dtmin = '2014-03-11 00:00:00'
, @dtmax = '2030-12-31 23:50:00'
, @dtnext = @dtmin;
WHILE (@dtnext <= @dtmax) BEGIN
INSERT INTO dbo.calendario(datacal) VALUES (@dtnext);
SET @dtnext = DATEADD(MINUTE, 10, @dtnext);
END;
基本上,我想创建一个日期间隔为 10 分钟的表格。循环插入了很多记录,但我认为执行它会很快。需要几分钟...
我使用的是 sql server 2008 r2。
感谢任何帮助。
【问题讨论】:
-
也许在循环中引入显式事务会有所帮助。
-
您的示例是一种程序/迭代方法。 SQL Server 通常使用基于集合的方法更有效。
-
我同意明确的交易可能会有所帮助。但是,这是一个需要几分钟的问题吗?这只是一个一次性的设置脚本,对吧?如果您在生产系统上定期运行此程序,您可能需要重新考虑您的方法。
-
是的,这将是生产中的一次性设置,但我仍在开发中 :)
-
啊,“几个”在 20 分钟内,而不是 2-3 分钟。是的,我知道这会变得多么烦人。 :-)
标签: sql sql-server optimization sql-server-2008-r2