在我的例子中,我有一个包含2,976,977条记录的Mysql表。这个表有两列索引,我在从多个客户端更新和插入记录时使用了这两列。问题是更新或插入值花费了太多时间。有没有什么办法可以加快速度呢?
发布于 2009-12-30 15:50:42
从评论中,我得到的印象是,它主要是在执行耗时太长的20000更新语句。您是否在自动提交模式(默认)下运行更新?如果是这样,那么您可以通过执行以下操作来大大提高性能:
START TRANSACTION;
...update statements go here...
COMMIT;请注意,如果其中一个更新由于违反约束而未成功,您将无法提交。在提交之前,您的数据不会被永久存储。
在java中,你可以这样做:
java.sql.Connection conn = DriverManager.getConnection(connectString, userName, passWord);
//explicit transaction by disabling autocommit.
conn.setAutocommmit(false);
java.sql.Statement stmt = conn.createStatement();
//add all your statements to the batch, f.e. in a loop
for (...) {
stmt.addBatch(sql);
}
int results[] = stmt.executeBatch();
...check the results here...
//store results permanently in db
conn.commit();发布于 2009-12-30 15:22:26
索引可能不会使插入和更新更快-它们可能会使插入和更新更慢,因为索引需要更新。
https://stackoverflow.com/questions/1978862
复制相似问题