【发布时间】:2009-09-30 05:52:09
【问题描述】:
我在支持 ODBC 连接的 Windows 机器上有一个数据源。我想每小时以编程方式将整个数据源复制到 MySql 数据库。有什么方法比 select * from 然后为每一行做 insert 更快吗?
【问题讨论】:
我在支持 ODBC 连接的 Windows 机器上有一个数据源。我想每小时以编程方式将整个数据源复制到 MySql 数据库。有什么方法比 select * from 然后为每一行做 insert 更快吗?
【问题讨论】:
您可能无法避免select * from,但您可以通过在复制之前禁用目标表上的键并在复制之后重新启用它们来显着加快速度(取决于表的大小和索引列的数量) .这是doc。
【讨论】:
不要对每一行进行插入。每一个都需要额外的时间让数据库响应每一行都是成功的。相反,使用 SQL 事务一次创建 100 个插入的批次...
【讨论】:
如前所述,select * from 是不可避免的。
但是,如果将所有数据写入文件并使用LOAD DATA INFILE ...,则插入速度比其他方法快两个数量级。
插入的速度足以支付将 ODBC 数据写入文件和完全删除 MySql 数据以及从头开始的成本。
【讨论】: