Subqueries vs joins
Subqueries vs joins
我重构了一个我们从另一个公司继承的应用程序中的一个较慢部分,使用了内连接而不是类似于子查询的方式:
WHERE id IN (SELECT id FROM ...)
重构后的查询运行速度快了约100倍。 (从大约50秒变为大约0.3秒)虽然我预期会有所改善,但有人能解释一下为什么会如此剧烈吗?where子句中使用的列都被索引了。SQL是每行执行一次where子句中的查询吗?
更新 - 解释结果:
区别在于 \"where id in ()\" 查询的第二部分 -
2 DEPENDENT SUBQUERY submission_tags ref st_tag_id st_tag_id 4 const 2966 Using where
与使用连接的1个有索引的行:
SIMPLE s eq_ref PRIMARY PRIMARY 4 newsladder_production.st.submission_id 1 Using index
admin 更改状态以发布 2023年5月24日