我在城市有一个城市和分类广告的网站。每个分类至少有一个类别。
这是架构(这里只包含我们需要的字段):
Table tv_classified :
id (INT, PK)
village_id (INT) (ID of the classified city)
Table tv_classified_category :
id (INT, PK) (ID of the category)
classified_id (INT, PK) (Foreign key to tv_classified table)
我正在尝试获取每个城市中每个类别的分类广告总数。我觉得这是一个非常基本的东西,但遗憾的是我的查询需要多年(而且我不是在开玩笑,它在10分钟后仍在运行,在tv_classified表中只有100K行)。
这是我的问题,我错过了什么吗?
SELECT COUNT(*), c.village_id, cat.id as category
FROM tv_classified c
JOIN tv_classified_category cat
GROUP BY c.village_id, cat.id;
致以最诚挚的问候,
答案 0 :(得分:4)
由于您未指定join
条件,因此将对表执行交叉连接。所以结果集中的行数在另一个表中为100K *行。
指定join
条件,查询应该没问题。
SELECT COUNT(*), c.village_id, cat.id as category
FROM tv_classified c
JOIN tv_classified_category cat on cat.classified_id = c.id
GROUP BY c.village_id, cat.id;