1. 事情的起因

  1. 写了一个小程序,用到了数据库,其他的调试一切正常,但是程序速度贼慢。一度怀疑我线程池有问题,经过仔细排查,发现是数据库的问题,因为把数据库相关的代码去掉,速度贼快。
  2. 确定了是数据库的问题,那么有进一步的深入发现是 一条sql语句的问题,执行时间竟然有0.5秒,可是半秒钟啊,无法接受的呀。

    2. 问题sql语句

  3. 这条sql很简单,就是更新状态的一条语句,更新grab表中的state字段

    UPDATE grab SET state=1 WHERE qid=6896366954471473416

Mysql,UPDATE速度慢

3. 为什么会这样?

经过在搜索引擎上的疯狂搜索资料,都是众口一词的说,是不是索引的问题?
发现了凡是问数据库的,统统一律是索引问题

  • 其实是WHERE后面的条件和数据表中的字段类型不一样所导致的,该死的mysql,不一样你不会报个错?

4. 加上双引号试试

我的那个字段是varchar类型的,你们的那个自己看着办

UPDATE grab SET state=1 WHERE qid="6896366954471473416"

Mysql,UPDATE速度慢