В профсоюз или профсоюз все, это вопрос
-
29-09-2019 - |
Вопрос
У меня есть два запроса, которые я UNION
Вместе так, чтобы я уже знал, что между двумя запросами не будет дублирующих элементов. Поэтому, UNION
и UNION ALL
даст те же результаты.
Какой из них мне использовать?
Решение
Вы должны использовать тот, который соответствует намерению того, что вы ищете. Если вы хотите убедиться, что нет дубликатов UNION
, в противном случае использовать UNION ALL
. Отказ То, что ваши данные дадут те же результаты Сейчас Не значит, что это всегда будет.
Что сказал, UNION ALL
Будет быстрее для любой внедренной реализации базы данных, см. Статьи ниже для примеров. Но обычно они то же самое, кроме этого UNION
Выполняет дополнительный шаг для удаления идентичных строк (как можно было бы ожидать), и это может иметь тенденцию доминировать над временем выполнения.
Другие советы
Я вижу, что вы отметили этот вопрос, поэтому я предполагаю, что это ваше основное рассмотрение.
UNION ALL
абсолютно превзойдет UNION
Так как SQL не должен проверять два набора на Dups.
Если вам не нужен SQL, чтобы выполнить дублиручную проверку для вас, всегда используйте UNION ALL
.
В соответствии с http://blog.sqlauthority.com/2007/03/10/sql-server-union-vs-union-all-which-is-better-for-performance/ По крайней мере, для производительности лучше использовать Union All, поскольку он не активно различает дубликаты и как таковые быстрее
я хотел бы использовать UNION ALL
так или иначе. Даже не смотря на ты Знайте, что не будет дубликатов, в зависимости от вашего двигателя сервера баз данных, он может этого не знать.
Итак, просто чтобы предоставить дополнительную информацию для DB Server, чтобы его планировщик запросов был лучшим выбором (вероятно), используйте UNION ALL
.
Сказав это, если вы DB -серверПланировщик запросов достаточно умный, чтобы сделать вывод, что информация из UNION
Предложение и табличные индексы, то результаты (производительность и семантические мудры) должны быть одинаковыми.
В любом случае, это сильно зависит от DB -сервер ты используешь.
Поскольку из двух союзов не будет дубликатов. Вам не нужно проверять наличие дубликатов, а Union - все это будет более эффективно выполнить задачу.