Конечно, это возможно, но я не уверен, поможет ли это.
Вы можете создать запланированное задание (возможно, один раз за ночь), которое заполняет таблицу с именем active_users_with_share_info, обрезая ее, а затем повторно заполняет ее на основе выбранного запроса, отфильтровывая пользователей, активных за последние 180 дней, с помощью "share_info = правда".
Затем вы можете присоединить свой поисковый запрос к этой таблице.
Однако я сомневаюсь, что это принесет много пользы - SQL Server достаточно умён в кэшировании. Если вы не имеете дело с огромными объемами данных (100 миллионов записей) или очень ограниченным аппаратным обеспечением, я сомневаюсь, что вы получите какие-либо ощутимые улучшения производительности - но непременно попробуйте!
Конечно, цена за это будет больше движущихся частей в вашем приложении, более интересные режимы сбоев (что произойдет, если пакет за одну ночь молча провалится?), И больше обучения для любых новых разработчиков, которых вы привели в команду.