Возможно ли это?
На самом деле я собираюсь пойти с нет : как представлено, вы, кажется, хотите, чтобы данные были из двух таблиц, строки которых связаны между собой. Для этого и предназначен JOIN. Если вы хотите преобразовать его представление в скоординированный подзапрос, такой как IN, EXISTS или вложенный выбор в списке выбора, вы просто затрудните чтение (для поддержки будущих разработчиков) или не сможете вернуться все данные, которые вы хотите.
Внутренне база данных, скорее всего, будет планировать и выполнять запросы одинаково, так что нет особого смысла отклоняться от метода JOIN. Microsoft прилагает огромные усилия для определения того, какие данные запрашиваются запросом, и наилучшей стратегии доступа к ним. Обычно это влечет за собой некоторое переписывание запроса, который вы даете, так что не имеет смысла использовать конкретный способ написания догадки, что синица будет лучше. Как правило, вы должны написать свой запрос как можно проще, позволить оптимизатору в базе данных выяснить его, и если он делает плохую работу, тогда начните что-то менять, чтобы он мог работать лучше. То, что вы представили здесь, возможно, самый простой из всех запросов; объединение двух таблиц в соотношении 1: M при условии разумной индексации и актуальности статистики данных, вы ничего не сможете сделать с точки зрения перезаписи ее каким-то ужасным образом, чтобы улучшить производительность Стратегия, которую оптимизатор выбирает
Если вы добавите больше информации к своему вопросу, уточняя, ПОЧЕМУ вы чувствуете, что вам это нужно, мы можем помочь больше. Вы, по сути, указали, что считаете, что есть проблема с производительностью, но, полагаю, вы еще не сказали, какой именно запрос вы выполняете (я сомневаюсь, что это буквально SELECT * FROM a JOIN b ON a.id = b.id
), так что если вам нужна помощь с этим, отправьте это