powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Group By in ver9.2.0.1
11 сообщений из 11, страница 1 из 1
Group By in ver9.2.0.1
    #32113752
Nedved
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые,
появилась такая проблемка:
есть групповой запрос, по двум полям, допустим:

select job,deptno,count(*) from emp group by job,deptno (1) ,

возвращающий следующие результаты:
CLERC , 10 , 1
.......................
ANALYST , 20, 2
.......................
SALESMAN , 30, 4
PRESIDENT, 10, 1 ну и т.д.

ВОПРОС : Почему первое поле сортируется не в алфавитном порядке, а по количеству символов в слове? Хотя группировка по одному полю (job) - даёт "правильный" результат:
ANALYST , 2
CLERC , 4
PRESIDENT, 1 и т.д.

Тот же запрос (1) в БД Оракл версии 8.1.х - отрабатывает правильно: первое поле сортируется в алфавитном порядке. Возможно,
это связанно с какими-то инициализационными параметрами в 9ке?! Использование конструкции ORDER BY ставит всё на свои места, но ведь должно же и без неё работать? или я не прав?
...
Рейтинг: 0 / 0
Group By in ver9.2.0.1
    #32113771
Фотография MaxU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> но ведь должно же и без неё работать? или я не прав?
существует ряд случаев когда без явной сортировки этот прием не работает...

например в случае параллельной обработки запросов или иногда при партиционированных таблицах...

т.е. если вы "железно" хотите получить отсортированный результат, надо использовать "order by"
...
Рейтинг: 0 / 0
Group By in ver9.2.0.1
    #32113791
Nedved
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том, что в 9ке "этот приём" ВООБЩЕ!!! не работает, по крайней у меня не получилось (пробовал на 2х разных инстансах, с совершенно различными таблицами), результат один и тот-же (описано выше)... а в 8ке никаких проблем не возникало... Для использование ORDER BY необходимо переписать большое количество скриптов, так что хотелось бы сначало попробовать перенастроить БД, если дело в ней...
...
Рейтинг: 0 / 0
Group By in ver9.2.0.1
    #32113796
Фотография Oracle X-pert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V takom sluchae ispol'zyut Group_id()
...
Рейтинг: 0 / 0
Group By in ver9.2.0.1
    #32113798
Фотография MaxU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какие есть индексы в приведенном примере?
...
Рейтинг: 0 / 0
Group By in ver9.2.0.1
    #32113911
ShgGena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kak recomendaciya -- ne primenyat group by dlya sortirovki.
nikto ne garantiroral cho group by - sortiruet - garantiruen=tsya tolko gruppirovka
-----------------------
Esli bez perepisovaniya select-ov :

Moget bit v dannoy situacii moget pomoch ustanovka parametra sovmestimosty s 8i v init.ora
(no v etom i ne uveren - probovat nado, poskolku optimizatory silno raznie)
-----------------------------------------------------
2 Oracle X-pert
>> V takom sluchae ispol'zyut Group_id()
1. Group_id() - voobche-to po bolsey chasty ispolzuyut v select-ah s analiticheskimy funkciyami
(a-lya rollup / cube) dlya regulirovaniya urovney itokovis summ no ne dlya sortirovky rezultata. 2. osnovnaya problema sostoit v popytke ispravit rabotu prilogeniya bez izmeneniya koda.
a chto order by ...
chto Group_id() ...
eto est izmenenie koda.
...
Рейтинг: 0 / 0
Group By in ver9.2.0.1
    #32114042
Nedved
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaxU , а причём здесь индексы? ведь при группировке всё-равно таблица будет полностья сканироваться? или я опять не прав?

ShgGena , можно поподробнее, как именно параметр называется? Дело, видимо, действительно в оптимизаторе, но уж очень он странно работает в 9ке: если группировка по одному полю, то сортирует по алфавиту, если по нескольким сначала по кол-ву символов, а уж потом по алфавиту... вот в этом прежде всего хотелось бы разобраться...
...
Рейтинг: 0 / 0
Group By in ver9.2.0.1
    #32114066
nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
group by не гарантирует сортировки!!!
у меня были случаи на 8.1 когда после group by результат небыл отсортирован.
Если хочешь гарантированно отсортированную выборку используй order by
...
Рейтинг: 0 / 0
Group By in ver9.2.0.1
    #32114273
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>MaxU, а причём здесь индексы? ведь при группировке всё-равно таблица
>будет полностья сканироваться? или я опять не прав?

Это ничего, если я за Макса отвечу :-)?

Так вот этот вопрос уже обсуждался - если существует индекс по полю, по которому производится группировка, то при определенных условиях (поле NOT NULL) будет выполняться INDEX FULL SCAN (а не TABLE FULL SCAN) без последующей сортировки, т.к. индекс уже отсортирован по определению.

Единственная проблема в том, что индекс всегда отсортирован в binary order, а не согласно nls параметрам.
...
Рейтинг: 0 / 0
Group By in ver9.2.0.1
    #32114284
Фотография MaxU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гена, за тобой не успеешь!
...
Рейтинг: 0 / 0
Group By in ver9.2.0.1
    #32115360
Каспер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну так что? Выхода из ситуации сложившейся так и не ншли?
А то у нас весь софт уже роздан...
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Group By in ver9.2.0.1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]