作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
对于一个大表(100 万条记录),我有一个这样的更新查询:
update direct_words set weight = (weight / 4) where knowledge_id = :a
and phrase_id in (select phrase_id from phrases where knowledge_id =:b
and phrase_class <> 6);
我有几个索引,但一个是针对字段的:
knowledge_id;phrase_id
这在 SQLite 下运行得非常快(2 秒或更少),但对于 MySQL,相同的查询大约需要 37 秒。我做错了什么?
最佳答案
尝试使用 JOIN
执行它
update direct_words a
INNER JOIN phrases b
ON a.phrase_id = b.phrase_id
set a.weight = (a.weight / 4)
where a.knowledge_id = :a AND
b.knowledge_id = :b AND
b.phrase_class <> 6
关于mysql - 使用 "IN"缓慢查询 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14274980/
我是一名优秀的程序员,十分优秀!