讓你的insert操作速度增加1000倍的方法
大家平時都會使用insert語句,特別是有時候需要一個大批量的數(shù)據(jù)來做測試,一條一條insert將會是非常慢的,那么我們?nèi)绾巫屛覀兊膇nser更快呢。
先看個例子:
我們需要在如下這個表中插入測試數(shù)據(jù),包含兩列,一個是itemid,一個是itemname。如果向這個表中插入103,680,000 條記錄,普通的插入方法可能需要20多天才能完成,但是用這里介紹的新方法在5個小時內(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
新的插入方法會使用已經(jīng)插入的數(shù)據(jù)來進行下一條記錄的操作,原理如下:
那么看看我的新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秒鐘。再改進下,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實現(xiàn)創(chuàng)建多個數(shù)據(jù)庫
這篇文章主要介紹了neo4j實現(xiàn)創(chuàng)建多個數(shù)據(jù)庫方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02IndexedDB瀏覽器內(nèi)建數(shù)據(jù)庫并行更新問題詳解
這篇文章主要為大家介紹了IndexedDB瀏覽器內(nèi)建數(shù)據(jù)庫并行更新問題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12快速解決openGauss數(shù)據(jù)庫pg_xlog爆滿問題
這篇文章主要介紹了openGauss數(shù)據(jù)庫pg_xlog爆滿問題解決,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04數(shù)據(jù)庫的設(shè)計方法、規(guī)范與技巧
數(shù)據(jù)庫的設(shè)計方法、規(guī)范與技巧...2007-03-03dataGrip顯示clickhouse時間字段不正確的問題
最近做數(shù)據(jù)遷移碰到一個問題,源數(shù)據(jù)和目的端數(shù)據(jù),導(dǎo)入的時間怎么都差8個小時,本文就來介紹一下如何解決,感興趣的可以了解一下2021-09-09如何利用分析函數(shù)改寫范圍判斷自關(guān)聯(lián)查詢詳解
這篇文章主要給大家介紹了關(guān)于如何利用分析函數(shù)改寫范圍判斷自關(guān)聯(lián)查詢的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用sql具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-10-10