讓你的insert操作速度增加1000倍的方法
大家平時(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ù):
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代碼:
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秒鐘就完成:
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)文章
neo4j實(shí)現(xiàn)創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)
這篇文章主要介紹了neo4j實(shí)現(xiàn)創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02IndexedDB瀏覽器內(nèi)建數(shù)據(jù)庫(kù)并行更新問(wèn)題詳解
這篇文章主要為大家介紹了IndexedDB瀏覽器內(nèi)建數(shù)據(jù)庫(kù)并行更新問(wèn)題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12快速解決openGauss數(shù)據(jù)庫(kù)pg_xlog爆滿問(wèn)題
這篇文章主要介紹了openGauss數(shù)據(jù)庫(kù)pg_xlog爆滿問(wèn)題解決,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04數(shù)據(jù)庫(kù)的設(shè)計(jì)方法、規(guī)范與技巧
數(shù)據(jù)庫(kù)的設(shè)計(jì)方法、規(guī)范與技巧...2007-03-03在PostgreSQL中實(shí)現(xiàn)遞歸查詢的教程
這篇文章主要介紹了在PostgreSQL中實(shí)現(xiàn)遞歸查詢的教程,包括在遞歸查詢內(nèi)排序等方法的介紹,需要的朋友可以參考下2015-04-04dataGrip顯示clickhouse時(shí)間字段不正確的問(wèn)題
最近做數(shù)據(jù)遷移碰到一個(gè)問(wèn)題,源數(shù)據(jù)和目的端數(shù)據(jù),導(dǎo)入的時(shí)間怎么都差8個(gè)小時(shí),本文就來(lái)介紹一下如何解決,感興趣的可以了解一下2021-09-09