Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 order by all  [new]
the_moon
Member

Откуда: Германия
Сообщений: 332
Привет,

у меня есть oracle 9 и необходимость отсортировать результат работы SELECT-а по всем полям.

Типа
select f1, f2, f3 from mytable order by all,
что эквивалентно
select f1, f2, f3 from mytable order by 1,2,3

У меня задача, для разнообразных селектов делать простейший анализ производительности. Определить скорость исполнения и поменялся ли результат исполнения по сравнению с прошлыми разами. Надо для автоматизированных тестов. Так вот было бы неплохо иметь результат уже отсортированным, что бы потом просто сличить его с предыдущим. Данные возращаемые селектами либо числа или простые строки, без всяких там блобов-клобов.

Спасибо
29 авг 07, 20:45    [4594671]     Ответить | Цитировать Сообщить модератору
 Re: order by all  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116225
the_moon
Привет,

у меня есть oracle 9 и необходимость отсортировать результат работы SELECT-а по всем полям.

Типа
select f1, f2, f3 from mytable order by all,
что эквивалентно
select f1, f2, f3 from mytable order by 1,2,3



Для понимания - а что мешает написать order by 1,2,3 ?
29 авг 07, 20:50    [4594692]     Ответить | Цитировать Сообщить модератору
 Re: order by all  [new]
the_moon
Member

Откуда: Германия
Сообщений: 332
select-ы будут приходить в виде

select f1, f2, f3 from mytable


А мой скрипт их будет запускать на базе, считать время и сравнивать результаты работы. То есть я думал офорачивать запросы в есче один запрос типа

select * from ( select f1, f2, f3 from mytable ) order by xxxx. Тоесть конечно можно скриптом посчитать колличество запятых между select и фром, но это как то через чур.
29 авг 07, 20:55    [4594711]     Ответить | Цитировать Сообщить модератору
 Re: order by all  [new]
the_moon
Member

Откуда: Германия
Сообщений: 332
в худшем варианте я могу и сам результат отсортировать, но хочется запрячь сервак.
29 авг 07, 20:58    [4594719]     Ответить | Цитировать Сообщить модератору
 Re: order by all  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116225
the_moon
select-ы будут приходить в виде

select f1, f2, f3 from mytable


А мой скрипт их будет запускать на базе, считать время и сравнивать результаты работы. То есть я думал офорачивать запросы в есче один запрос типа

select * from ( select f1, f2, f3 from mytable ) order by xxxx. Тоесть конечно можно скриптом посчитать колличество запятых между select и фром, но это как то через чур.


Прямого пути нет.
Количество запятых может не помочь, если в запросе например функции.
Альтернативный - вырезать SELECT- список и вставлять его целиком в ORDER BY
29 авг 07, 21:01    [4594724]     Ответить | Цитировать Сообщить модератору
 Re: order by all  [new]
the_moon
Member

Откуда: Германия
Сообщений: 332
ну и ладно
29 авг 07, 21:09    [4594752]     Ответить | Цитировать Сообщить модератору
 Re: order by all  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116225
dmidek
the_moon
select-ы будут приходить в виде

select f1, f2, f3 from mytable


А мой скрипт их будет запускать на базе, считать время и сравнивать результаты работы. То есть я думал офорачивать запросы в есче один запрос типа

select * from ( select f1, f2, f3 from mytable ) order by xxxx. Тоесть конечно можно скриптом посчитать колличество запятых между select и фром, но это как то через чур.


Прямого пути нет.
Количество запятых может не помочь, если в запросе например функции.
Альтернативный - вырезать SELECT- список и вставлять его целиком в ORDER BY


А там еще и звездочки, с которыми можно работать, делая count(*) в all_tab_columns,
и скалярные подзапросы, которые таки нужно будет как-то идентифицировать и наверное
преобразовывать в порядковые номера.

Так что я думаю действительно :-)

the_moon
ну и ладно
29 авг 07, 21:25    [4594817]     Ответить | Цитировать Сообщить модератору
 Re: order by all  [new]
TiG
Member

Откуда:
Сообщений: 780
Есть еще вариант с использованием пакета DBMS_SQL (PARSE + DESCRIBE_COLUMNS) - см. Example 8: Describe Columns. По трудоемкости реализации (надёжной реализации) думаю попроще подсчета запятых будет.
30 авг 07, 00:02    [4595105]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить