我有这样一个查询:红移:“IN子句”中的最大项?
SELECT count(id), pro.country_code
FROM profiles AS pro
WHERE id IN (SELECT profile_id FROM reports)
GROUP BY pro.country_code;
我的问题:
有多少项目可以在红移使用条款?每次存储实际的id而不是子sql语句的速度要快得多,对吗?
我有这样一个查询:红移:“IN子句”中的最大项?
SELECT count(id), pro.country_code
FROM profiles AS pro
WHERE id IN (SELECT profile_id FROM reports)
GROUP BY pro.country_code;
我的问题:
有多少项目可以在红移使用条款?每次存储实际的id而不是子sql语句的速度要快得多,对吗?
从我所知道的没有限制,但如果你要带来很多数据,你可以使用存在。
SELECT count(id),
pro.country_code
FROM profiles AS pro
WHERE exists (SELECT profile_id FROM reports where pro.id=reports.profile_id)
GROUP BY pro.country_code;
它应该是更加更快
您也可以使用相交,而不是在
为“用户”已经说过的,你最好的表现会与一个WHERE EXISTS子句和子查询。既然你提到性能是一个重要的考虑因素,我还应该指出更重要的性能因素就是你的表格分布。为了使其运行良好,您需要仔细检查两个表是否具有“profile_id”列作为分配键,并且两个表都使用相同的数据类型声明了该列。
对子选择返回的项目数没有限制。至少不是在Postgres中,亚马逊是一个分支(虽然来自一个真正的旧版本),所以不应该有任何限制。 –