1. 事情的起因
- 写了一个小程序,用到了数据库,其他的调试一切正常,但是程序速度贼慢。一度怀疑我线程池有问题,经过仔细排查,发现是数据库的问题,因为把数据库相关的代码去掉,速度贼快。
- 确定了是数据库的问题,那么有进一步的深入发现是 一条sql语句的问题,执行时间竟然有0.5秒,可是半秒钟啊,无法接受的呀。
2. 问题sql语句
- 这条sql很简单,就是更新状态的一条语句,更新
grab
表中的
state
字段
UPDATE grab SET state=1 WHERE qid=6896366954471473416
3. 为什么会这样?
经过在搜索引擎上的疯狂搜索资料,都是众口一词的说,是不是
索引的问题?
发现了凡是问数据库的,统统一律是索引问题
- 其实是
WHERE
后面的条件和数据表中的字段类型不一样所导致的,该死的mysql,不一样你不会报个错?
4. 加上双引号试试
我的那个字段是varchar类型的,你们的那个自己看着办
UPDATE grab SET state=1 WHERE qid=\"6896366954471473416\"