не взять же все подписки по очереди и проверять каждую
А как ещё узнать?)
Проверять подходит ли под фильтр конкретной подписки только проверкой попадает ли объявление под все условия.
Нужно сузить конечно изначально выборку подписок, только подписки конкретной категории и допустим по поисковой фразе, если такое задаётся в фильтре.
Т.е. отсекать подписки по самым общим параметрам, и только потом уже подробно фильтровать по оставшимся.