Ein select where in() ist mit Sicherheit nicht schneller als ein Join. Notfalls richtet man noch nen dauerhaften Index ein, wenn man das Ganze zusätzlich beschleunigen will.
Aber von außen ist es auch schwer da eine Einschätzung zu machen was da jetzt kompliziert ist oder nicht und wo man da den besten Lösungsansatz vornimmt.
Wohlmöglich sollte man der Datenbank einfach einen fertigen Wert verpassen, damit das Count obsolete wird. Das ist meist noch am besten für die Performance.