I'm not sure how much difference it makes here, but doesn't this seem like the type of thing we'd want a join for?  It seems like we'd get better performance with two joins (pool attributes, and product attributes), then N where clauses, rather than N subqueries.