A common problem that leads to an inefficient query goes something like this:
SELECT ...
FROM a
JOIN b ON ...
WHERE ...
GROUP BY a.id
First, the JOIN
expands the number of rows; then the GROUP BY
whittles it back down the the number of rows in a
.
There may not be any good choices to solve this explode-implode problem. One possible option is to turn the JOIN
into a correlated subquery in the SELECT
. This also eliminates the GROUP BY
.