2011-04-04 168 views
0

我有for循環,並在該循環內我已經使用INSERT INTO命令75000+值。當我運行它消耗更多的時間。我怎麼能提高插入速度,...提前SQL執行速度非常慢

感謝... RGS tharindu

+6

發表了一些代碼。 – 2011-04-04 06:37:38

+1

「當我運行它時會消耗更多時間。」不止是什麼? – 2011-04-04 06:42:39

+2

並告訴我們您正在使用哪個DBMS – 2011-04-04 06:47:45

回答

1

如果您使用的是SQL服務器(未指定):不是很多個人INSERT電話,使用批量方法如

+0

我正在使用WAMP並且具有名爲master和master_break的表。主表具有名爲start_number和no_of_items的副本。 所以我需要得到START_NUMBER和NO_OF_ITEMS從主表和genarate更多鈔票數... 例如:START_NUMBER = 45620個 NO_OF_ITEMS = 5個 – tharindu 2011-04-04 06:45:55

+0

@tharindu:這真的很有趣。你期待我如何處理這些信息? – 2011-04-04 06:47:09

1

如果你有75K插入一個循環,你就錯了

根據您的意見,你需要一些東西來gererate行你。

;WITH cNumbers AS 
(
    SELECT ROW_NUMBER() OVER (ORDER BY c.id) - 1 AS rownum 
    FROM sys.columns c CROSS JOIN start_number c2 CROSS JOIN start_number c3 
) 
SELECT 
    c.rownum + m.start_number 
FROM 
    mastertable m 
    CROSS JOIN 
    cNumbers c 
WHERE 
    c.rownum <= no_of_items 

有更好的方法來生成行,但這會更好,然後循環75K次。

編輯:同樣的想法適用於大部分RDBMS的MySQL之外不具有在這種情況下,我不得不充滿1-100000 Numbers表格的examplke

+1

他似乎在使用MySQL – 2011-04-04 07:13:29

0

一個解決方案窗口函數... 可能是將數據寫入到文件中,然後在mysql中使用LOAD DATA INFILE批量加載它。與具有75000個獨立插頁相比,它應該可以大大加快速度。