2010-06-09 1 views

ответ

3

База данных создаст другой план выполнения для обоих запросов. Без реальной проблемы с производительностью, я бы пошел с более простым запросом. Замена or на union делает простой запрос умеренно сложным. Но сделать сложный запрос трудно понять.

Есть также небольшие различия между обоими запросами. База данных будет отфильтровывать дубликаты для второго запроса (вы используете union, а не union all.) Это может иметь удивительные эффекты, если вы фильтруете по столбцам, которые вы не выбираете.

0

Да, в этом случае это то же самое.

-1

Не совсем то же самое, если у вас есть vend_id из 1001 с ценой менее 5, тогда вы получите две строки из первого запроса и одну только одну строку из второго запроса.

В общем, вторая форма лучше, так как ее легче читать и, вероятно, быстрее выполнять.

+3

Вы не получите два ряда, потому что 'union' отфильтровывает дубликаты (в отличие от 'union all'.) – Andomar

0

Оба же в вашем примере

Но второй способ будет быстрее, так как UNION сортирует результирующий набор, который может быть медленным

Смежные вопросы