powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / CREATE VIEW... ORDER BY
25 сообщений из 30, страница 1 из 2
CREATE VIEW... ORDER BY
    #40021856
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обнаружил, что Оракл официально поддерживает сортировку в представлениях.
"официально" означает что в документации рассуждается когда можно, а когда нельзя в представлении использовать ORDER BY.

Например:
Код: plsql
1.
2.
3.
4.
create view v_all_views as 
select owner, view_name 
  from all_views 
 order by owner;



Однако, теперь не могу придумать как это фичу можно применить.

Напрямик представление никуда не всунуть, нужно через select, а тогда сортировка представления перестает быть внешней сортировкой, и порядок строк не определен.

Получается что для чего-то Оракл эту фичу разрешил, а как ей пользоваться мне пока неясно.
Кто-то успешно применял сортировку в нематериализированном представлении?
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40021859
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из моих нескольких экспериментов похоже что сортировка представления влияет на порядок,
в котором доступающийся к нему select обрабатывает строчки, т.е.

select * from v_all_views;

Увидит* строчки начиная с первой в порядке сортировки представления.

Судя по документации Оракла, такое поведение намеренное и рекомендуется к применению.

(*) Увидит - не покажет. Select может увидеть строчки в одном порядке, а показать - в другом.
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40021924
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Кто-то успешно применял сортировку в нематериализированном представлении?
Глупцы ее успешно применяют где ни попадя.
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40021952
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А нет, я не первый.

Ну что ж, и здесь напишу: сортировка в представлениях не нужна.
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40021986
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Напрямик представление никуда не всунуть

Для начала, а что такое представление?
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40022011
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL,

не вижу большой крамолы использовать order by в обзорах

если напр очень часто данные нужны именно в таком виде, то почему б не использовать ету фичу

тем более
1) будет сортировка по умолчанию
2) сортировку можно переопределить
3) можно отменить
4) update/delete с сортировкой (нет деадлока)
5) другое

минус вижу в возможности злоупотреблений

зы
лично я не использовал

зыы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Обзоры

        Обзор  -  это  настроенное  представление данных, содержащихся в
        одной  или  нескольких  таблицах  (или  других  обзорах).  Обзор
        определяется с  использованием запроса,  и поэтому  о нем  можно
        думать как  о "хранимом  запросе" или  о "виртуальной  таблице".
        Обзоры  можно  использовать   в  большинстве  мест,   где  могут
        использоваться таблицы.



.....
stax
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40022121
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
НеофитSQL
Напрямик представление никуда не всунуть

Для начала, а что такое представление?


Я это слово использовал как перевод для "view", т.к. видел его здесь.

"Напрямик не всунуть" означало что требует использование select для использования, тем самым превращая сортировку представления во внутреннюю.
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40022125
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL"Напрямик не всунуть" означало что требует использование select для использования, тем
самым превращая сортировку представления во внутреннюю.
А вот это не факт. Оптимизатор не рассматривает view как чёрный ящик, он способен
как пропихнуть предикаты вовнутрь, так и вытащить сортировку наружу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40022126
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

> 1) будет сортировка по умолчанию

Тут у оракла довольно хитромудро, потому что они наотрез отказываются перечислить операции сохраняющие порядок строк.

Более формальным языком, в отличие от MsSql, Оракл содержит ограниченную поддержку для обработки упорядоченных множеств, но плохо ее документирует.

Пока мне удалось установить достоверно что упорядоченные множества поддерживается для:
- select/rownum комбо, для порядка выборки
- пустой select * без параметров (no-op)

Если верить архивам sql.ru, в 2013 году наш Вячеслав Любомудров выразил мнение что порядок строк обычно сохраняется до следующей сортировки, но с тех пор сузил свою позицию до "любая операция может перемешать порядок строк, и я закрою темы про наследственность сортировки", что создаёт определенные барьеры для обсуждения поддержки упорядоченных множеств.

Вкратце упоминая другие дбмс, sql server занял более очерченную позицию - они не признают существование упорядоченных множеств, вплоть до запрещения и игнорирования ORDER BY во внутренних селектах.
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40022129
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

НеофитSQL"Напрямик не всунуть" означало что требует использование select для использования, тем
самым превращая сортировку представления во внутреннюю.
А вот это не факт. Оптимизатор не рассматривает view как чёрный ящик, он способен
как пропихнуть предикаты вовнутрь, так и вытащить сортировку наружу.


Здесь обсуждаются официальные гарантии языка, а не побочные эффекты наблюдаемые в конкретной реализации.

Например, GROUP BY однажды довольно надёжно сортировало строки. Это было побочным эффектом, и те кто на это рассчитывали испытали трудности миграции с оракла 8.

Сегодня, UNION одной колонки "довольно надёжно" сортирует строки, но это также побочный эффект.

Для контраста,

Select rownum, v.* from SOME_SORTED_VIEW

Будет продолжать уважать сортировку заданную в представлении (обзоре?), пока оракл не решится сломать задокументированные фичу.
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40022130
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Вкратце упоминая другие дбмс, sql server занял более очерченную позицию

Дал цитату из доки и закрыл тему, да
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40022132
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
они не признают существование упорядоченных множеств,

Наоборот. По умолчанию данные там вернутся отсортированными по кластерному индексу. И это описано.
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40022133
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Сегодня, UNION одной колонки "довольно надёжно" сортирует строки

На кластере. На больших выборках. При параллельном выполнении. Весьма надёжно, да.
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40022134
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Stax,

> 1) будет сортировка по умолчанию

Тут у оракла довольно хитромудро

ничего хитромудрого для меня нет, порядок гарантирует order by

остальное (комбо, пустой select ...) для меня замудро

есть/были конечно интересные (для меня) вопросы, но не более

напр
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SQL> ed
Wrote file afiedt.buf

  1* select rownum idx,value(x) from table(sys.odcinumberlist(100,200,150)) x
SQL> /

       IDX   VALUE(X)
---------- ----------
         1        100
         2        200
         3        150

SQL>


хочеш порядок лепи order by (в тч во вью )
не ленись, тем-более можно номерами


.....
stax
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40022137
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL

Для контраста,

Select rownum, v.* from SOME_SORTED_VIEW

Будет продолжать уважать сортировку заданную в представлении (обзоре?), пока оракл не решится сломать задокументированные фичу.

во вью order by есть, если сломается ето будет баг
смотрите на обзор как на "подзапрос"
select * from ... (текст вью) SOME_SORTED_VIEW ...

.....
stax
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40022144
K790
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
когда закончится этот поток безсознания про сортировку?

ответ был явно дан, но автор какой-то непробиваемый
22237604

авторОднако, теперь не могу придумать как это фичу можно применить.
есть конкретная задача? зачем все эти измышлизмы?
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40022145
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
во вью order by есть, если сломается ето будет баг

А что считать за "сломается"?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SQL> create or replace view dropme_v as select * from all_objects order by object_name;

View created.

SQL> select object_name from dropme_v fetch first 1 rows only;

OBJECT_NAME
--------------------------------------------------------------------------------
ABSPATH

SQL> alter session set ...

Session altered.

SQL> select object_name from dropme_v fetch first 1 rows only;

OBJECT_NAME
--------------------------------------------------------------------------------
_ACTUAL_EDITION_OBJ
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40022147
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

если поменяли сортировку (напр на бинари), то ничего не сломалось

.....
stax
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40022148
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

Технически не сломалось, не спорю. Но результат уже другой.
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40022159
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
fetch first 1 rows only

Oracle не гарантирует, что сортировка в представлении будет учитываться.

row_limiting_clauseFor consistent results, specify the order_by_clause to ensure a deterministic sort order
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40022160
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode,

Да про это уже много раз сказали, я показывал, что один и тот же запрос поверх "сортированной" вьюхи может вернуть разный результат в зависимости от внешних воздействий, которые напрямую на вьюху не влияют.

упд. set NLS_SORT = BINARY_CI
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40022161
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
K790
когда закончится этот поток безсознания про сортировку?

ответ был явно дан, но автор какой-то непробиваемый
22237604


Ответ принимается. Из него следует что сортировка во view бессмысленна.

Сортировка во view - поддерживаемая фича оракла.

Видите противоречие?
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40022162
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL,

А чтобы ещё больше сбить с толку, могу придумать способ использования такой конструкции.

Вынос во вьюхи запросов курсоров пакета для возможности менять код запроса, не трогая тело/спецификацию пакета/ов. И вот в этом случае order by во вьюхе будет гарантировать порядок выдачи строк в курсоре (с поправкой на nls).
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40022164
K790
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL,

так и не ответили на вопрос
авторОднако, теперь не могу придумать как это фичу можно применить.
зачем это вам?

кроме BINARY можно задать еще кучу ALTER

Читайте уже концепции и большинство вопросов отпадут сами собой.
...
Рейтинг: 0 / 0
CREATE VIEW... ORDER BY
    #40022167
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

Запрос вида select * from sorted_view не должен ломать сортировку, любые дополнительные фичи поверх могут изменить или вообще отменить сортировку, в принципе возможен вариант когда сортированное представление может понадобиться, если у вас есть бесконечно убогий клиент, который умеет только select и from, других вариантов просто не останется.

PS: изменение параметров сортировки не отменяет и не изменяет поля по которым производится сортировка, оно меняет правила сравнения значений и механизм этот действует одинаково на любые запросы с сортировкой.
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / CREATE VIEW... ORDER BY
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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