Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Сортировка данных внутри вьюхи  [new]
_PLSQL_
Guest
Вопрос к знатокам - гарантируется ли выдача упорядоченных данных в случае запроса к представлению внутри которого указан порядок сортировки.
Чтобы было понятнее - имеем представление v_xxx, объединяющее определенным образом несколько таблиц и содержащее конструкцию вида order by f2. Мы делаем селект из данного представления
select * from v_xxx where f1=pyfxtybt
Будут ли данные по данному запросу возвращаться отсортированными по полю f2.

Собственная статистика показывает, что да. Но есть подозрение. что оракл не гарантирует этого и данные могут возвращаться в произвольном порядке в определенных случаях
20 июл 11, 10:32    [10998523]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка данных внутри вьюхи  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
А зачем вообще ставить ORDER BY внутри View? Лень написать в запросе?
20 июл 11, 10:44    [10998602]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка данных внутри вьюхи  [new]
Data corruption
Guest
_PLSQL_,

автор
Но есть подозрение. ...в произвольном порядке в определенных случаях.


с чего вы взяли ? пруф.
20 июл 11, 10:45    [10998609]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка данных внутри вьюхи  [new]
_PLSQL_
Guest
tru55
А зачем вообще ставить ORDER BY внутри View? Лень написать в запросе?

Типа того. Представление используется в ряде мест, но данные из него всегда должны обрабатываться в определенном порядке. Проще в этом случае сразу в представлении задать нужный порядок сортировки, нежели задавать каждый раз в запросе.
20 июл 11, 10:52    [10998660]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка данных внутри вьюхи  [new]
_PLSQL_
Guest
Data corruption
_PLSQL_,
автор
Но есть подозрение. ...в произвольном порядке в определенных случаях.

с чего вы взяли ? пруф.


Если бы я имел пруф, то это означало бы, что я уже имею ответ на свой вопрос и не стал бы в этом случае задавать вопрос в форуме. Я же, напротив, хочу получить пруф на доку, где поведение оракла в данной ситуации будет четко описано. Вопрос возник не на пустом месте - была ситуация. когда одной из причин некорректной работы системы мог быть возврат неотсортированных данных из представления. К сожалению, воспроизвести данную ситуация не представляется уже возможным.
20 июл 11, 10:56    [10998694]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка данных внутри вьюхи  [new]
Elic
Member

Откуда:
Сообщений: 29980
_PLSQL_
Представление используется в ряде мест, но данные из него всегда должны обрабатываться в определенном порядке.
Неужели сложно один раз привести этот "ряд" в порядок, чтобы не засыпать каждую ночь с валидолом и вазелином под подушкой?
20 июл 11, 11:14    [10998862]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка данных внутри вьюхи  [new]
_PLSQL_
Guest
Elic
_PLSQL_
Представление используется в ряде мест, но данные из него всегда должны обрабатываться в определенном порядке.
Неужели сложно один раз привести этот "ряд" в порядок, чтобы не засыпать каждую ночь с валидолом и вазелином под подушкой?

Если бы речь шла о том, что только мы используем это представление. Своих программистов я бы мог посадить и переделать все обращения к этой вьюхе. Но гарантировать, что сторонние разработчики будут всегда использовать нужный порядок сортировки практически невозможно. Понятно, что я могу выставить им условие, что все проблемы, которые возникнут из-за этого лягут на их головы, но дело в том, что я должен буду каждый раз разбираться с подобными ситуациями и доказывать, что проблема возникла по их вине. Вот только доказать это не всегда возможно, да и тратить свое время на разбор ситуации тоже не самое лучшее для меня времяпровождение.
Кроме того, для меня данный вопрос представляет и академический интерес. Во первых, лучше начинаешь понимать, как работает оракл, а во вторых знание таких нюансов порой облегчает и/или упрощает написание кода.
20 июл 11, 11:22    [10998917]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка данных внутри вьюхи  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
Сейчас доступа к базе нет, чтоб набросать тесткейс, но в оптимизатор может делать order by elimination и есть соответствующий хинт /*+ no_eliminate_oby */, чтобы он этого не делал.
20 июл 11, 11:35    [10999001]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка данных внутри вьюхи  [new]
Elic
Member

Откуда:
Сообщений: 29980
_PLSQL_
Но гарантировать, что сторонние разработчики будут всегда использовать нужный порядок сортировки практически невозможно. Понятно, что я могу выставить им условие, что все проблемы, которые возникнут из-за этого лягут на их головы, но дело в том, что я должен буду каждый раз разбираться с подобными ситуациями и доказывать, что проблема возникла по их вине. Вот только доказать это не всегда возможно, да и тратить свое время на разбор ситуации тоже не самое лучшее для меня времяпровождение.
Бардак в архитектуре и/или в API. Полный бардак.
20 июл 11, 11:36    [10999004]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка данных внутри вьюхи  [new]
Data corruption
Guest
wurdu,

здесь вроде как приведены тесткейсы с элименейтом, но это при всяких прочих условиях, автор которых не привел :)

https://www.sql.ru/forum/actualthread.aspx?tid=823980
20 июл 11, 11:48    [10999121]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка данных внутри вьюхи  [new]
Awkward
Member

Откуда:
Сообщений: 76
_PLSQL_,

1. Дока Oracle - http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/pseudocolumns009.htm#i1006297

"This is sometimes referred to as top-N reporting:

SELECT *
FROM (SELECT * FROM employees ORDER BY employee_id)
WHERE ROWNUM < 11;
In the preceding example, the ROWNUM values are those of the top-level SELECT statement, so they are generated after the rows have already been ordered by employee_id in the subquery."

Это конечно про inline, но все-таки.

2. Старый ответ с asktom:

Another question on the same subject :
when i create a View :
Create or replace view vw_inline as
SELECT a
FROM ( SELECT a FROM t ORDER BY a )

and then:
select a from vw_inline ;
would my order by criteria still preserved ?

Thanks in advance.


Followup November 24, 2004 - 7am Central time zone:

rownum was just part of that example -- it was trying to show how to order and then assign rownum
instead of assigning rownum and then ordering. the answer "use the inline view with order by as
that will sort, then assign rownum to the sorted records"

as long as wv_inline was queried "standalone", yes. if you join it or anything like that -- all
bets are off
.
20 июл 11, 13:06    [10999667]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка данных внутри вьюхи  [new]
Awkward
Member

Откуда:
Сообщений: 76
Awkward,

забыл ссылку: http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:995030557145
20 июл 11, 13:10    [10999699]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить