懂得兩百個招,每天,每個對應於比主子文件中的一個百招,總共一年是730萬筆信息 這裏是我的SQL命令如何紅眼與代碼SQLSERVER while循環
DECLARE @day INT =0
DECLARE @everyday DATETIME
DECLARE @mastercount INT=0
DECLARE @detailcount INT=0
DECLARE @state NVARCHAR(3)='ship'
DECLARE @user VARCHAR(8)='Sid'
DECLARE @masterid INT
SET nocount ON
WHILE(@day <= 364)
BEGIN
IF(@day = 122)
BEGIN
SET @user='danny'
SET @state='stock'
END
ELSE IF(@day = 244)
BEGIN
SET @user='annie'
SET @state='ship'
END
SET @everyday=Dateadd(yy, Datediff(yy, 0, Getdate()), @day)
WHILE(@mastercount < 200)
BEGIN
INSERT INTO OrderMaster
(OrderCustomerName,orderdate,orderstate)
VALUES (@user,@everyday,@state)
SELECT @masterid = C_Id
FROM OrderMaster
WHERE C_Id = Scope_identity()
WHILE(@detailcount < 100)
BEGIN
INSERT INTO OrderDetail
(C_OrderMasterId,C_ProductMasterId,Quantity)
VALUES (@masterid,1 + (21 - 1) * Rand(),Rand() * 100 + 1)
SET @[email protected] + 1
END
SET @detailcount=0--
SET @[email protected] + 1
END
SET @mastercount=0
SET @[email protected] + 1
END
SET nocount OFF
但是 總共花費51分鐘 太長了~~ 我該如何縮短時間? 謝謝〜!
您可以使用數字表來替換WHILE循環和有效的基於集合的操作。查看第一個回答http://dba.stackexchange.com/questions/11506/why-are-numbers-tables-invaluable – hatchet 2014-11-21 01:52:43
感謝您的回覆,我正在使用谷歌搜索相關信息:) – SID 2014-11-21 02:04:06