索引对更新语句速度影响很大

  背景:服务器cpu报警,5分钟内3次超过30%。当时,公司管理产品的同事正通过我们提供的程序对上传的数据做处理。

  原本一分钟能处理10000条数据的,突然变成一分钟只能处理100左右。对每个数据操作时间进行排查发现,更新操作的时间是0.6s,从这个时间推算,差不多一分钟就只能处理100条左右。

  但是之前为什么能处理那么多呢?原来今天刚运行的数据是修改数据的操作。然后发现修改所依据的字段不是主键,也没有加索引。马上对它建立索引,再次运行,发现增加到1000条,并没有到10000条级别。折腾了很久,发现是刚发现cpu过高时,给代码设置的usleep时间是0.1s,每跑完一条休息0.1s,自然是只能差不多1000条了。最后把这个去掉之后就又正常了。

  更新时where语句中的条件字段一定要加索引,尤其是大批量的数据更新。本例中,没有将主键作为条件字段,这也是一个原因。

posted @ 2016-10-26 13:42  洋葱土豆随心匠  阅读(3547)  评论(0编辑  收藏  举报