Mig*_*l E 1 mysql sql database join
对于一个大表(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);
Run Code Online (Sandbox Code Playgroud)
我有几个索引,但有一个用于字段:
knowledge_id;phrase_id
Run Code Online (Sandbox Code Playgroud)
这在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
Run Code Online (Sandbox Code Playgroud)