Я просто задаюсь вопросом, были ли у Вас таблица и Вы unioned это, это было бы больше efficent затем с помощью соединения??
Я действительно знаю, что соединение создает больше столбцов, но это более теоретически - объединение должно будет сделать, сканирование вложенного цикла другой таблицы как соединение имело бы к?
Объединение будет быстрее, поскольку оно просто передает первый оператор SELECT, а затем анализирует второй оператор SELECT и добавляет результаты в конец выходной таблицы .
Объединение будет проходить по каждой строке обеих таблиц, находя совпадения в другой таблице, поэтому потребуется гораздо больше обработки из-за поиска совпадающих строк для каждой строки.
Под Союзом я имею в виду Союз Всех, поскольку он казался адекватным тому, чего вы пытались достичь. Хотя нормальный Union обычно быстрее, чем Join.
Я не согласен с ним.С технической точки зрения, независимо от того, насколько хорошо ваше соединение, "JOIN" по-прежнему дороже, чем чистая конкатенация. В подтверждение этого я написал сообщение в своем блоге codePERF [dot] net . На практике они служат двум совершенно разным целям, и более важно убедиться, что вы правильно индексируете и используете правильный инструмент для работы.
Технически, я думаю, это можно суммировать, используя следующие 2 плана выполнения, взятые из моего сообщения в блоге:
UNION ALL
Execution Plan JOIN
Execution Plan На практике разница при поиске по кластерному индексу незначительна:
JOIN
и UNION
имеют две разные цели. JOIN
используется для добавления дополнительных таблиц в запрос с целью добавления критериев отбора и, возможно, дополнительных столбцов. UNION
используется для объединения результатов двух разных запросов с одинаковыми столбцами. Вопрос о том, какой из них более эффективен, подобен вопросу о том, какой из "буханки хлеба" и "дующего ветра" более "оранжевый".
Один SELECT будет использовать не более одного индекса на таблицу. Объединение будет использовать не более одного индекса для каждого SELECT в объединении.
Объединение будет лучше использовать индексы, что может привести к более быстрому выполнению запроса.
Извините, что разорвал вашу партию, но хорошо написанное вступление будет быстрее, чем союз.