2011-04-04 193 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个独立插页相比,它应该可以大大加快速度。