|
Order by во View
|
|||
---|---|---|---|
#18+
Добрый день всем Oracle 12 Order by во View поддерижвается попрбовал - запускать вроде одинаковый порядок. Есть ли гарантия что порядок будет одинаковым , при условии что набор полей в Order by является уникальным ключом ? В SQL server нельзя было Order by во вью Я понимаю что лучше задавать Order by во внешнем запросе. SELECT * FROM View order by f1 , f2 , ... ; Но пока было заимплеменечено так на бакенде и запросы идут пачками по 500 с сдвигом поэтому важно чтобы порядок записей был одинаков. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2020, 11:02 |
|
Order by во View
|
|||
---|---|---|---|
#18+
Гулин Федор Добрый день всем Oracle 12 Order by во View поддерижвается попрбовал - запускать вроде одинаковый порядок. Есть ли гарантия что порядок будет одинаковым , при условии что набор полей в Order by является уникальным ключом ? В SQL server нельзя было Order by во вью Я понимаю что лучше задавать Order by во внешнем запросе. SELECT * FROM View order by f1 , f2 , ... ; Но пока было заимплеменечено так на бакенде и запросы идут пачками по 500 с сдвигом поэтому важно чтобы порядок записей был одинаков. Заимплеменчивание ордер баев во вью хайдит мандаторное упорядочение от программёра. Потом, когда все зафоргетят про этот ордер бай другой девелопер поверх него зааддирует еще один ордер бай. И Оракл будет мэйкать редудантный сортинг. Так что, камрад, ты сначала посинкай гуудово и ордер бай поставь в правильный плейс твоей аппликухи. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2020, 12:14 |
|
Order by во View
|
|||
---|---|---|---|
#18+
Изя Кацман И Оракл будет мэйкать редудантный сортинг. уверены? в какой версии будет мэйкать? ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2020, 13:10 |
|
Order by во View
|
|||
---|---|---|---|
#18+
Изя Кацман, Вопросы перформанса пока не так важны по тестам вроде все ок порядок постоянный понимаю что это возможно не бест практис ситуация есть 3 вью с разных таблиц по структуре вью почти одинаковые ( недостающие поля заполнены нулл. и т.д ) вью сделаны потому что на БД проще хитрую логику сделать и главное быстрей менять и order by в этих вью разный - поэтому не хочется на бакенде это длеать ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2020, 14:38 |
|
Order by во View
|
|||
---|---|---|---|
#18+
Гулин Федор Изя Кацман, Вопросы перформанса пока не так важны про перформанс Изя немножко приврал (Одессит наверное) оракля в 99% случаев поймет что два раза сортировать не надо ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2020, 14:50 |
|
Order by во View
|
|||
---|---|---|---|
#18+
Гулин Федор, Когда-то у Oracle , был единственный алгоритм группировки: - "сначала отсортировать, затем, пробегая по сортированному набору, границы групп определять сравнением текущих полей группировки с ними же в предыдущей записи" Ясно что такой алгоритм, пока он единственный, всегда, гарантированно и автоматически будет выдавать сортированный по полям группировки набор данных. И многие на это сознательно закладывались - зачем дописывать самому Order by, если он автоматически сам окажется такой, какой надо. Между тем - такое "мнение" - простая логическая ошибка, положившаяся на особенность конкретной реализации алгоритма группировки. Который, в общем случае, не обязан никак быть завязан на предварительную сортировку данных. На больших наборах данных, этот первоначальный алгоритм работает достаточно плохо, поскольку требует колоссальные объемы работы на предварительную сортировку. В какой-то момент Oracle реализовал второй алгоритм, существенно (ну, очень-очень существенно) более быстрый на больших наборах - предварительная сортировка не производится, а по мере пробега по набору строится хеш-таблица, идентифицирующая производимые группы, кодами которой метятся просматриваемые группы. Такой вариант не только не требует предварительной сортировки, но и замечательно распараллеливается. В зависимости от размера набора и характеристик группировки, стал применяться тот или иной алгоритм на выбор системы. Естественно, те, кто поленился дописывать order By стали вопить "как же так! Где же автоматическая сортировка? Это всегда работало!" Между тем, они были всего лишь жертвами своей собственной логической ошибки и лени рук и мозга. Если ты не управляешь системой внятно, она управится сама с тем, что считает своими данными, раз тебе от них ничего не надо. В системах с декларативных описанием алгоритмов пропуск запятых в "казнить нельзя помиловать" - катастрофическая ошибка, означающая неопределенное поведение. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2020, 15:03 |
|
Order by во View
|
|||
---|---|---|---|
#18+
В последних версиях (вроде с 19й, может с 20й) появились макрофункции, которые можно приспособить для решения вашей "проблемы". Во всех предыдущих, один из правильных вариантов решения вашей проблемы может быть таким: Над тремя своими View образуете четвертую, такого содержания Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
И на клиенте всегда обращаетесь только к ней, с запросом такого вида Код: plsql 1. 2. 3. 4. 5.
Другие варианты, так или иначе, основаны на получение набора данных (курсора) от интерфейсной хранимой процедуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2020, 15:29 |
|
Order by во View
|
|||
---|---|---|---|
#18+
booby, Где у Федора о группировке? ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2020, 15:30 |
|
Order by во View
|
|||
---|---|---|---|
#18+
Stax booby, Где у Федора о группировке? ..... stax Ровно там, где собрался на клиенте опираться на order by во view. Впрочем, забудь про группировку... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2020, 15:33 |
|
Order by во View
|
|||
---|---|---|---|
#18+
booby "сначала отсортировать, затем, пробегая по сортированному набору, границы групп определять сравнением текущих полей группировки с ними же в предыдущей записи" . ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2020, 15:40 |
|
Order by во View
|
|||
---|---|---|---|
#18+
xtender booby "сначала отсортировать, затем, пробегая по сортированному набору, границы групп определять сравнением текущих полей группировки с ними же в предыдущей записи" . ммм... Ок. Более точное описание будет таким: Агрегация строилась на очереди агрегатов, реализованной в виде пирамиды, строящейся на поступающем наборе входных данных. В связи с этим, термин "предварительная сортировка", действительно неверен. Правильнее сказать так: группировка строилась поверх алгоритма сортировки, расходы на которую были неотделимы от алгоритма группировки, и цена которой определялась количеством образуемых групп. Этот вариант и сейчас используется. На малых наборах данных или на наборах с малым числом групп, его производительность близка к идеалу. В этом смысле, для больших наборов с бедным числом групп, еще надо "посмотреть" - не произошло ли малой деградации с внедрением нового алгоритма. Точность описания конкретного алгоритма в данную секунду не имеет значения. Речь, по существу, идет о формировании общей системы ожиданий. Вот нельзя было в SQL Server - и это очень хорошо . А Oracle показывает, что работает и ничего не ломает в моих экспериментах. Ага, давай вот немедленно и воспользуемся наблюдённым... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2020, 15:55 |
|
Order by во View
|
|||
---|---|---|---|
#18+
booby В последних версиях (вроде с 19й, может с 20й) появились макрофункции ... Другие варианты,... Федор спросил авторЕсть ли гарантия что порядок будет одинаковым? Гарантия есть, если приложение не определит другой порядок (запретить никак) Усе ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2020, 16:23 |
|
Order by во View
|
|||
---|---|---|---|
#18+
Stax, есть существенная разница между "запретить никак" и "гарантии есть". Из одного не следует другое никак . ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2020, 22:32 |
|
Order by во View
|
|||
---|---|---|---|
#18+
booby Stax, есть существенная разница между "запретить никак" и "гарантии есть". Из одного не следует другое никак . если во вью есть order bу ("при условии что набор полей в Order by является уникальным ключом") то порядок гарантируется, при условии что его (порядок) не переопределит приложение, запретить order bу (внешний по отношению к вью) нет возможности напр вью v_emp select * from emp order by empno seleсt * from v_emp - порядок гарантирован seleсt * from v_emp order by job - порядок не гарантирован (job не ключ), запретить order by job нет возможности ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2020, 20:21 |
|
Order by во View
|
|||
---|---|---|---|
#18+
Stax, Когда говорят "порядок гарантируется", подразумевают, что в абстрактных вопросах он гарантируется формальной математикой, а во всех остальных случаях - юридическим законом или честным словом, записанным на бумаге. дадите ссылку, где в данном случае почитать о записанных выданных гарантиях? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2020, 05:08 |
|
Order by во View
|
|||
---|---|---|---|
#18+
Хинты eliminate_oby / no_eliminate_oby ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2020, 09:08 |
|
Order by во View
|
|||
---|---|---|---|
#18+
Stax booby, Где у Федора о группировке? ..... stax Да потверждаю что во View(точнее 3 SQL View) группировки НЕТ вопрос изменения данных на ходу тоже не рассматривается - обмен данных будет ночью в субботу - вряд ли кто влезет ворпос возник из за различий в MS-SQL (нельзя делать order by во вью ) и Oracle (можно) понятно что если есть набор записей с одинаковыми полями {f1,f2} order by f1 , f2 , .. то порядок НЕ гарантирован я вроде вытащил набор полей к-й составляет логический UK и все что меня интересует не будет ли какого-то бага (фичи) в к-м опрядок может измениться На тестах вроде все ок Там написан кусок на яве возвращающией по 500 записей с оффсетом (0, 500, 1000,1500 ... ) - поэтому важно чтобы порядок записей был одинаков когда был ордер Не гарантирующий порядок - был явный баг интересует возможны ли какие грабли здесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2020, 16:08 |
|
Order by во View
|
|||
---|---|---|---|
#18+
Гулин Федор, Почему б не работать (а бага, она и в вью бага) имхо order by должен нормально работать, со времен когда так топ н, искали из доки Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
токо у Вас явное вью, не online ps кстати для топ 500 в плане будет stopkey ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2020, 16:40 |
|
|
start [/forum/topic.php?fid=52&msg=40009248&tid=1880784]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
80ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 314ms |
total: | 498ms |
0 / 0 |