首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql DML性能

Mysql DML性能
EN

Stack Overflow用户
提问于 2009-12-30 15:16:18
回答 2查看 206关注 0票数 1

在我的例子中,我有一个包含2,976,977条记录的Mysql表。这个表有两列索引,我在从多个客户端更新和插入记录时使用了这两列。问题是更新或插入值花费了太多时间。有没有什么办法可以加快速度呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-30 15:50:42

从评论中,我得到的印象是,它主要是在执行耗时太长的20000更新语句。您是否在自动提交模式(默认)下运行更新?如果是这样,那么您可以通过执行以下操作来大大提高性能:

代码语言:javascript
复制
START TRANSACTION;
...update statements go here...
COMMIT;

请注意,如果其中一个更新由于违反约束而未成功,您将无法提交。在提交之前,您的数据不会被永久存储。

在java中,你可以这样做:

代码语言:javascript
复制
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();
票数 1
EN

Stack Overflow用户

发布于 2009-12-30 15:22:26

索引可能不会使插入和更新更快-它们可能会使插入和更新更慢,因为索引需要更新。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1978862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档