JOIN
JavaType type = mapper.getTypeFactory().constructParametrizedType(UberObjectWithId.class,
UberObject.class, MyRequest.class, MyResponse.class);
LATERAL
SELECT *
FROM a
INNER JOIN (
SELECT b.id, Count(*) AS Count
FROM b
GROUP BY b.id ) AS b ON b.id = a.id;
据我所知,这里的连接将被计算一次,然后与主要请求和每个FROM的请求合并。
在我看来,如果连接会将几行旋转到一帧,那么它会更有效但是如果它是1比1那么LATERAL - 我认为对吗?
答案 0 :(得分:2)
如果我理解你,你会问两个陈述中的哪一个更有效率。
您可以使用EXPLAIN (ANALYZE)
自行测试,我猜答案取决于数据:
如果a
中的行数很少,如果LATERAL
上有索引,b(id)
联接可能会更有效。
如果a
中有很多行,第一个查询可能会更有效,因为它可以使用哈希或合并连接。