Вопрос

У меня есть два запроса, которые я 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 - все это будет более эффективно выполнить задачу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top