I don’t want to share my exact DB structure, so let’s assume this analogy :
--categories-- id name --products-- id name cat_id
I then have SQL like this :
SELECT categories.*, count(CASE WHEN products.column1=something1 and products.column2=something2 THEN 1 END) as count1, count(CASE WHEN products.column3=something3) as count2 FROM categories LEFT JOIN products ON products.cat_id=categories.id GROUP BY categories.id
The problem here is that the GROUP BY is taking too long, it’s a difference between 0.2s query and 2.5s query.