亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

讓你的insert操作速度增加1000倍的方法

 更新時(shí)間:2009年08月29日 01:29:47   作者:  
大家平時(shí)都會(huì)使用insert語(yǔ)句,特別是有時(shí)候需要一個(gè)大批量的數(shù)據(jù)來(lái)做測(cè)試,一條一條insert將會(huì)是非常慢的,那么我們?nèi)绾巫屛覀兊膇nser更快呢。
很多時(shí)候方法選對(duì)了對(duì)于我們做事將會(huì)是事半功倍。

大家平時(shí)都會(huì)使用insert語(yǔ)句,特別是有時(shí)候需要一個(gè)大批量的數(shù)據(jù)來(lái)做測(cè)試,一條一條insert將會(huì)是非常慢的,那么我們?nèi)绾巫屛覀兊膇nser更快呢。

先看個(gè)例子:

我們需要在如下這個(gè)表中插入測(cè)試數(shù)據(jù),包含兩列,一個(gè)是itemid,一個(gè)是itemname。如果向這個(gè)表中插入103,680,000 條記錄,普通的插入方法可能需要20多天才能完成,但是用這里介紹的新方法在5個(gè)小時(shí)內(nèi)就能夠完成。

先看一般的數(shù)據(jù)插入方法,假設(shè)我們向上表中插入100000 條數(shù)據(jù):

復(fù)制代碼 代碼如下:

CREATE TABLE #tempTable([Item ID] [bigint], [Item Name] nvarchar(30))
DECLARE @counter int
SET @counter = 1
WHILE (@counter < 100000)
BEGIN
INSERT INTO #tempTable VALUES (@counter, 'Hammer')
SET @counter = @counter + 1
END
SELECT * FROM #tempTable
DROP TABLE #tempTable

新的插入方法會(huì)使用已經(jīng)插入的數(shù)據(jù)來(lái)進(jìn)行下一條記錄的操作,原理如下:

 那么看看我的新insert代碼:

復(fù)制代碼 代碼如下:

CREATE TABLE #tempTable([Item ID] [bigint], [Item Name] nvarchar(30))
INSERT INTO #tempTable VALUES (1, 'Hammer')
WHILE((SELECT COUNT(*) FROM #tempTable) < 100000)
BEGIN
INSERT INTO #tempTable ([Item ID], [Item Name])
(SELECT [Item ID] + (SELECT COUNT(*) FROM #tempTable), 'Hammer' FROM #tempTable)
END
SELECT * FROM #tempTable
DROP TABLE #tempTable

用第一種方法可能需要幾十分鐘插入100000數(shù)據(jù),但是用第二種只要4秒鐘。再改進(jìn)下,2秒鐘就完成:
復(fù)制代碼 代碼如下:

CREATE TABLE #tempTable([Item ID] [bigint], [Item Name] nvarchar(30))
INSERT INTO #tempTable VALUES (1, 'Hammer')
DECLARE @counter int
SET @counter = 1
WHILE(@counter <= 17)
BEGIN
INSERT INTO #tempTable ([Item ID], [Item Name])
(SELECT [Item ID] + (SELECT COUNT(*) FROM #tempTable), 'Hammer' FROM #tempTable)
SET @counter = @counter + 1
END
SELECT * FROM #tempTable
DROP TABLE #tempTable

相關(guān)文章

最新評(píng)論