Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
_sts_
- Сообщения: 23
- Зарегистрирован: 28 авг 2006, 19:38
Сообщение
_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.
Вот спасибо!