|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
Обнаружил, что Оракл официально поддерживает сортировку в представлениях. "официально" означает что в документации рассуждается когда можно, а когда нельзя в представлении использовать ORDER BY. Например: Код: plsql 1. 2. 3. 4.
Однако, теперь не могу придумать как это фичу можно применить. Напрямик представление никуда не всунуть, нужно через select, а тогда сортировка представления перестает быть внешней сортировкой, и порядок строк не определен. Получается что для чего-то Оракл эту фичу разрешил, а как ей пользоваться мне пока неясно. Кто-то успешно применял сортировку в нематериализированном представлении? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2020, 21:16 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
Из моих нескольких экспериментов похоже что сортировка представления влияет на порядок, в котором доступающийся к нему select обрабатывает строчки, т.е. select * from v_all_views; Увидит* строчки начиная с первой в порядке сортировки представления. Судя по документации Оракла, такое поведение намеренное и рекомендуется к применению. (*) Увидит - не покажет. Select может увидеть строчки в одном порядке, а показать - в другом. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2020, 21:25 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
НеофитSQL Кто-то успешно применял сортировку в нематериализированном представлении? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 06:36 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
А нет, я не первый. Ну что ж, и здесь напишу: сортировка в представлениях не нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 09:13 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
НеофитSQL Напрямик представление никуда не всунуть Для начала, а что такое представление? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 10:42 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
НеофитSQL, не вижу большой крамолы использовать order by в обзорах если напр очень часто данные нужны именно в таком виде, то почему б не использовать ету фичу тем более 1) будет сортировка по умолчанию 2) сортировку можно переопределить 3) можно отменить 4) update/delete с сортировкой (нет деадлока) 5) другое минус вижу в возможности злоупотреблений зы лично я не использовал зыы Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 11:32 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
env НеофитSQL Напрямик представление никуда не всунуть Для начала, а что такое представление? Я это слово использовал как перевод для "view", т.к. видел его здесь. "Напрямик не всунуть" означало что требует использование select для использования, тем самым превращая сортировку представления во внутреннюю. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 16:26 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
НеофитSQL"Напрямик не всунуть" означало что требует использование select для использования, тем самым превращая сортировку представления во внутреннюю. А вот это не факт. Оптимизатор не рассматривает view как чёрный ящик, он способен как пропихнуть предикаты вовнутрь, так и вытащить сортировку наружу. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 16:52 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
Stax, > 1) будет сортировка по умолчанию Тут у оракла довольно хитромудро, потому что они наотрез отказываются перечислить операции сохраняющие порядок строк. Более формальным языком, в отличие от MsSql, Оракл содержит ограниченную поддержку для обработки упорядоченных множеств, но плохо ее документирует. Пока мне удалось установить достоверно что упорядоченные множества поддерживается для: - select/rownum комбо, для порядка выборки - пустой select * без параметров (no-op) Если верить архивам sql.ru, в 2013 году наш Вячеслав Любомудров выразил мнение что порядок строк обычно сохраняется до следующей сортировки, но с тех пор сузил свою позицию до "любая операция может перемешать порядок строк, и я закрою темы про наследственность сортировки", что создаёт определенные барьеры для обсуждения поддержки упорядоченных множеств. Вкратце упоминая другие дбмс, sql server занял более очерченную позицию - они не признают существование упорядоченных множеств, вплоть до запрещения и игнорирования ORDER BY во внутренних селектах. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 17:07 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov НеофитSQL"Напрямик не всунуть" означало что требует использование select для использования, тем самым превращая сортировку представления во внутреннюю. как пропихнуть предикаты вовнутрь, так и вытащить сортировку наружу. Здесь обсуждаются официальные гарантии языка, а не побочные эффекты наблюдаемые в конкретной реализации. Например, GROUP BY однажды довольно надёжно сортировало строки. Это было побочным эффектом, и те кто на это рассчитывали испытали трудности миграции с оракла 8. Сегодня, UNION одной колонки "довольно надёжно" сортирует строки, но это также побочный эффект. Для контраста, Select rownum, v.* from SOME_SORTED_VIEW Будет продолжать уважать сортировку заданную в представлении (обзоре?), пока оракл не решится сломать задокументированные фичу. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 17:17 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
НеофитSQL Вкратце упоминая другие дбмс, sql server занял более очерченную позицию Дал цитату из доки и закрыл тему, да ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 17:19 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
НеофитSQL они не признают существование упорядоченных множеств, Наоборот. По умолчанию данные там вернутся отсортированными по кластерному индексу. И это описано. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 17:20 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
НеофитSQL Сегодня, UNION одной колонки "довольно надёжно" сортирует строки На кластере. На больших выборках. При параллельном выполнении. Весьма надёжно, да. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 17:22 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
НеофитSQL Stax, > 1) будет сортировка по умолчанию Тут у оракла довольно хитромудро ничего хитромудрого для меня нет, порядок гарантирует order by остальное (комбо, пустой select ...) для меня замудро есть/были конечно интересные (для меня) вопросы, но не более напр Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
хочеш порядок лепи order by (в тч во вью ) не ленись, тем-более можно номерами ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 17:25 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
НеофитSQL Для контраста, Select rownum, v.* from SOME_SORTED_VIEW Будет продолжать уважать сортировку заданную в представлении (обзоре?), пока оракл не решится сломать задокументированные фичу. во вью order by есть, если сломается ето будет баг смотрите на обзор как на "подзапрос" select * from ... (текст вью) SOME_SORTED_VIEW ... ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 17:30 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
когда закончится этот поток безсознания про сортировку? ответ был явно дан, но автор какой-то непробиваемый 22237604 авторОднако, теперь не могу придумать как это фичу можно применить. есть конкретная задача? зачем все эти измышлизмы? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 17:39 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
Stax во вью order by есть, если сломается ето будет баг А что считать за "сломается"? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 17:40 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
env, если поменяли сортировку (напр на бинари), то ничего не сломалось ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 17:45 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
Stax, Технически не сломалось, не спорю. Но результат уже другой. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 17:46 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
env fetch first 1 rows only Oracle не гарантирует, что сортировка в представлении будет учитываться. row_limiting_clauseFor consistent results, specify the order_by_clause to ensure a deterministic sort order ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 18:14 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
graycode, Да про это уже много раз сказали, я показывал, что один и тот же запрос поверх "сортированной" вьюхи может вернуть разный результат в зависимости от внешних воздействий, которые напрямую на вьюху не влияют. упд. set NLS_SORT = BINARY_CI ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 18:16 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
K790 когда закончится этот поток безсознания про сортировку? ответ был явно дан, но автор какой-то непробиваемый 22237604 Ответ принимается. Из него следует что сортировка во view бессмысленна. Сортировка во view - поддерживаемая фича оракла. Видите противоречие? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 18:16 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
НеофитSQL, А чтобы ещё больше сбить с толку, могу придумать способ использования такой конструкции. Вынос во вьюхи запросов курсоров пакета для возможности менять код запроса, не трогая тело/спецификацию пакета/ов. И вот в этом случае order by во вьюхе будет гарантировать порядок выдачи строк в курсоре (с поправкой на nls). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 18:20 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
НеофитSQL, так и не ответили на вопрос авторОднако, теперь не могу придумать как это фичу можно применить. зачем это вам? кроме BINARY можно задать еще кучу ALTER Читайте уже концепции и большинство вопросов отпадут сами собой. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 18:24 |
|
CREATE VIEW... ORDER BY
|
|||
---|---|---|---|
#18+
env, Запрос вида select * from sorted_view не должен ломать сортировку, любые дополнительные фичи поверх могут изменить или вообще отменить сортировку, в принципе возможен вариант когда сортированное представление может понадобиться, если у вас есть бесконечно убогий клиент, который умеет только select и from, других вариантов просто не останется. PS: изменение параметров сортировки не отменяет и не изменяет поля по которым производится сортировка, оно меняет правила сравнения значений и механизм этот действует одинаково на любые запросы с сортировкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 18:30 |
|
|
start [/forum/topic.php?fid=52&msg=40021859&tid=1880667]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 181ms |
0 / 0 |