Порядок выполнения по UNION

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
_sts_
Сообщения: 23
Зарегистрирован: 28 авг 2006, 19:38

Порядок выполнения по UNION

Сообщение _sts_ » 18 янв 2007, 12:39

Запрос (упрощенный, думаю всем понятна суть :)

Код: Выделить всё

select 'муж ' ,count(*)  from klients where k_SEX='м'
union
select '----',0 from klients
union
select 'жен ' ,count(*)  from klients where k_SEX='ж'
думал получить результат: мужики - разделитель - бабы, ан нет: разделитель - бабы - мужики!
Вопрос: откуда сортировка? (индексов никаких, план - сплошной натурал:) Это что, так надо?

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 18 янв 2007, 12:52

Потому что UNION делает DISTINCT, для чего и нужна сортировка.
Используй UNION ALL.

sts
Сообщения: 20
Зарегистрирован: 10 янв 2006, 21:06

Сообщение sts » 18 янв 2007, 17:48

WildSery писал(а):Потому что UNION делает DISTINCT, для чего и нужна сортировка.
Используй UNION ALL.
Вот спасибо!

Ответить