为什么连接比子查询慢得多,或者我做错了什么?

时间:2018-01-17 22:36:10

标签: sql performance

我正在测试这种情况的性能:

有一个表名为带有列id和名称的类,有10000条记录。有一个包含列id,body,category_id的表格帖子有百万行,其中每一行被随机分配到其中一个类别。 posts中的categories_id是指向categories.id的外键,两个表中名为id的列都是主键。在这些列上创建索引。

现在,我的目标是获取每个类别的帖子数量列表。

为什么子查询比加入更快?我使用了h2和mysql,虽然没有太多的性能调优,可能也没有理解某些事情,并且两者都是一致的,因为连接或多或少比子查询慢。

这些是查询:

使用子查询:

SELECT categories.name, 
(SELECT COUNT(posts.id) FROM posts WHERE posts.categories_id = categories.id) as postCount 
FROM categories

加入:

select categories.name, count(posts.id) from categories 
left join posts on posts.categories_id=categories.id 
group by categories.id

0 个答案:

没有答案