powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Строгий порядок строк в чужой таблице
61 сообщений из 61, показаны все 3 страниц
Строгий порядок строк в чужой таблице
    #40011545
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос теоретический.

Если есть таблица, в которой владелец не предусморел первичного ключа, есть ли метод для получения строк в стабильном порядке?

Добавлять колонки нельзя.

Стабильность определяется следующим образом:

- повторяемость. Два запроса на неизменной таблице вернут одинаковый результат.

- копируемость. Возможность создать копию, где запрос даст такой же результат.

- локальность изменений. Изменение в одной строке не приводит к перетасовыванию остальных.

Rowid не обладает свойством копируемости, SCN по умолчанию блочный.

Если в Оракле можно отсортировать по значению всех колонок не перечисляя их поименно (order by *), это бы удовлетворило все критерии стабильности. К сожалению, синтакс такое не позволяет.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011550
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
владелец не предусморел первичного ключа

Договориться с владельцем. Без добавления колонок: составной первичный ключ.

order by *

Опять выдумываете сущности, Оккам негодует.

Статический SQL: order by field1, field2, ... (структура данных должна быть определена).
Динамический SQL: рисуем хоть черта лысого.

При интеграции можно и выкачивать таблицу себе, хоть через dblink, хоть через любой конвертер.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011555
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm,

Я перечислил известные мне методы, думал наверное что-то забыл.

Забыл про динамический sql, с которым ещё не работал.
Если он мне позволяет перечислить колонки в предсказуемом порядке, то это выглядит как ответ.

"Order by *" это описание подхода - сравнение всей строки.
Если бы SCN работал построчно по умолчанию, подошёл бы он.

Оракл позволяет сортировать по названию индекса? Если так, то это был бы ещё один метод, причем быстрый.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011556
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL

Если бы SCN работал


SCN, rowid и прочие низкоуровневые для программиста БД вещи вполне работают в своих узких областях применения. Лично вам их использовать пока рано.

Оракл позволяет сортировать по названию индекса?

Насколько я знаю, нет. Вы опять забегаете куда-то в дебри.

Сделайте нужные фильтр, сортировку, научитесь читать планы запросов и использовать хинты. Пока вам этого за глаза хватит.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011561
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Вопрос теоретический.

Если есть таблица, в которой владелец не предусморел первичного ключа, есть ли метод для получения строк в стабильном порядке?

Добавлять колонки нельзя.

Стабильность определяется следующим образом:

- повторяемость. Два запроса на неизменной таблице вернут одинаковый результат.

- копируемость. Возможность создать копию, где запрос даст такой же результат.

- локальность изменений. Изменение в одной строке не приводит к перетасовыванию остальных.

Rowid не обладает свойством копируемости, SCN по умолчанию блочный.

Если в Оракле можно отсортировать по значению всех колонок не перечисляя их поименно (order by *), это бы удовлетворило все критерии стабильности. К сожалению, синтакс такое не позволяет.


> - повторяемость. Два запроса на неизменной таблице вернут одинаковый результат.
В SQL определен только один вариант определения порядка строк: ORDER BY
В любом другом случае, СУБД имеет права выдавать строки как ей удобнее, например от наличия блока таблицы в кэше.

> - копируемость. Возможность создать копию, где запрос даст такой же результат.
Смотри пункт первый

> - локальность изменений. Изменение в одной строке не приводит к перетасовыванию остальных.
...
> Если в Оракле можно отсортировать по значению всех колонок не перечисляя их поименно (order by *), это бы удовлетворило все критерии стабильности.

Одно утверждение, не стыкуется с другим!
И вообще, первичный ключ - понятие логическое, определяется дизайном схемы в зависимости от поставленной задачи.

Использование * для перечисления столбцов, в общем случае мина замедленного действия. Не ленитесь использовать имена столбцов явно. Тем более, есть служебные представления для автоматической генерации столбцов.
Например я пользуюсь таким скриптом для этого:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
--  auto generate column list 
-- use: colgen.sql owner table_name table_alias
select '        , '||'&3.."'||COLUMN_NAME||'"'
from all_tab_columns 
where 
	owner=upper('&1') 
	and TABLE_NAME=upper('&2')
order by column_id
/



Вместо order by *, поскольку количество столбцов в таблице конечно, и меняются они достаточно редко, кто Вам мешает проверить изменились ли столбцы перед запросом, и пересоздать динамически рабочую view?
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011565
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НеофитSQL
Если есть таблица, в которой владелец не предусморел первичного ключа, есть ли метод для получения строк в стабильном порядке?

Нет.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011566
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vadim Lejnin,

Вы подтвердили что мое понимание таблиц верное, я и не надеялся на стабильность без присутствия команды сортировки (исключение - union all, но моему вопросу union all не помогает).

Спасибо за конкретный пример, я его использую для эмуляции order by *

Код: plsql
1.
2.
3.
4.
5.
6.
select 'order by TST.'||
       listagg(COLUMN_NAME,', TST.') Within group (order by COLUMN_NAME)
from all_tab_columns 
where 
	owner=NEOPHYTE and 
	TABLE_NAME='TST'



Это должно мне дать команду упорядочивания для динамического sql которая будет отвечать всем параметрам стабильной сортировки.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011569
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почитал про внутреннее представление rowid, научился контролировать их порядок при insert.

Теперь order by rowid отвечает всем требованиям стабильной сортировки, исполняется быстрее чем сортировка по всем полям, и не требует динамический sql.

Возьму на вооружение, если когда-то понадобится.

На полный ключ они не тянут, а вот для быстрой сортировки для детерминистичности результата запроса - в самый раз.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011570
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
graycode
НеофитSQL
Если есть таблица, в которой владелец не предусморел первичного ключа, есть ли метод для получения строк в стабильном порядке?

Нет.


Order by rowid

Оказалось проще чем я думал. Вы наверное тоже об этом знали.

Осталось выяснить разницу между rowid и urowid.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011572
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НеофитSQL,

Обезьяна с гранатой, как это мило
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011574
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Почитал про внутреннее представление rowid, научился контролировать их порядок при insert.
...


Теперь прочитайте про row_movement_clause .
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011581
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vadim Lejnin
НеофитSQL
Почитал про внутреннее представление rowid, научился контролировать их порядок при insert.
...


Теперь прочитайте про row_movement_clause .


Спасибо.

Ценное замечание из которого следует что order by rowid может внезапно измениться для некоторых таблиц созданных с этой опцией. Хорошо что она выключена по умолчанию.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011600
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. При копировании в другую таблицу или бд rowid вряд ли останется тем же
2. Создать индекс по нескольким полям varchar2(4000) не удастся
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011617
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreymx
1. При копировании в другую таблицу или бд rowid вряд ли останется тем же
2. Создать индекс по нескольким полям varchar2(4000) не удастся


1. Это так. Rowid уникален*, и его значение не подлежит копированию. Однако, вставки в пустую таблицу без partitions получают монотонно растущие rowid. Это позволяет сохранить порядок как в оригинале.

2. Сравнение всех колонок имеет несколько ограничений, поэтому rowid sort выглядит привлекательно.

Правильный подход для новых данных - это по прежнему PK, я думаю какие приемы могут пригодиться для чтения и анализа старых данных.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011623
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
вставки в пустую таблицу без partitions получают монотонно растущие rowid. Это позволяет сохранить порядок как в оригинале.

Неверно.
Ну почитайте уже, наконец, концепты - от несомой Вами ахинеи даже смеяться не хочется, тоска берет.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011632
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous
НеофитSQL
вставки в пустую таблицу без partitions получают монотонно растущие rowid. Это позволяет сохранить порядок как в оригинале.

Неверно.
Ну почитайте уже, наконец, концепты - от несомой Вами ахинеи даже смеяться не хочется, тоска берет.


Не бойтесь новых знаний, независимо от вашего опыта. Посмотрите расшифровку 10-байтного rowid в официальной документации оракла, и многое станет понятным.

Например, есть ситуации где Оракл использует order by rowid по умолчанию, и это поведение задокументировано.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011634
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
НеофитSQL
andrey_anonymous
пропущено...

Неверно.
Ну почитайте уже, наконец, концепты - от несомой Вами ахинеи даже смеяться не хочется, тоска берет.


Не бойтесь новых знаний, независимо от вашего опыта. Посмотрите расшифровку 10-байтного rowid в официальной документации оракла, и многое станет понятным.
это ты знания не впитываешь и несёшь чепуху. Описание структуры rowid ещё надо понимать. Чти доку! Вдумчиво. От корки до корки.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011644
Фотография кит северных морей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Посмотрите расшифровку 10-байтного rowid в официальной документации оракла, и многое станет понятным.
дело не в структуре rowid, а в том, что с точки зрения конечного пользователя он может меняться без предупреждения. операции обслуживания - например alter table move - прозрачны для пользователя (в общем случае он не может отследить факт их выполнения), не меняют самих данных, но меняют их расположение на диске и, соответственно, rowid. даже на несекционированных таблицах. ваше требование повторяемости выполнено не будет
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011654
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Считаю, что для 99% sql-говнокодеров знание структуры rowid бесполезно
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011661
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кит северных морей
операции обслуживания ... ваше требование повторяемости выполнено не будет

И без них не будет.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011685
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно конечно использовать сварочный аппарат вместо болтов для крепления колес, но для решения бизнес задач, нужно использовать бизнес решения.

Если перед бизнесом стоит задача, которую Вы привели (Я правда не понимаю зачем), то решать нужно с помощью бизнеса: служебной запиской с обоснованием и требованием ресурсов.

Бываю задачи, которые не решаются с помощью такой схемы: например таблица в базах гос структуры
В этом случае задача распадается на две: синхронизация данных и обеспечение требований архитектуры.

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

Для проверки изменились ли строки, можно использовать hash функции, а локальную копию таблицы, снабдить искуственным PK проблем нет.

p.s.
SQL функции ORA_HASH/STANDARD_HASH не доступны в PL/SQL, вместо них нужно использовать DBMS_CRYPTO.HASH
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011688
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для синхронизации таблиц, есть стандартные средства: matview/goldengate, но они не всегда доступны, исходная талица может быть совсем не oracle
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011752
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vadim Lejnin,

Комментарии прочитаны и приняты.

> Если перед бизнесом стоит задача, которую Вы привели (Я правда не понимаю зачем),

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

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

Order by rowid вполне подходит для такой полевой кухни, хотя позже я узнал, что этот порядок уже и так является по умолчанию для индексных запросов. Возможно и для других, ещё не проверял.

Не удивлюсь, если "select * from TABLE" уже и так возвращает строки в порядке rowid по умолчанию. Надо сильно извергаться, чтобы оправдать порядок отличный от этого.

Остаются запросы с сортировкой по выражению с повторяющимися значениями. Поскольку методы сортировки Оракла не являются стабильными*, детерминизм можно вернуть досортировав по rowid.

* Стабильность сортировки это свойство, относящееся к обработке одинаковых значений.

Замечания по поводу передвижения таблиц, сжатия таблиц справедливые и полезные. Есть ещё какие-то кластерные грабли, где сортировка по rowid может сломаться необычным и интересным способом, я не вдавался.

Всем спасибо, я узнал много нового.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011756
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Order by rowid вполне подходит для такой полевой кухни, хотя позже я узнал, что этот порядок уже и так является по умолчанию для индексных запросов
Вот это про что сейчас было?

И собственно, если ты решил, что более поздние строки имеют больший ROWID, то ты таки хреново рассмотрел структуру ROWID
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011798
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL,

В огороде бузина, в киеве дядька...



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

Зачем? Если нужен порядок, то order by, если order by в запросе нет, то порядок для задачи не важен. Тем более для анализа "производительности"...

Похоже, вы опять придумали себе гемор на ровном месте, как неумная женьщина:
авторСама про него придумала
Себя в уме его спросила
Сама в уме за него ответила
Сама на него обиделась


Есть документация Performance Tuning Guide


> Не удивлюсь, если "select * from TABLE" уже и так возвращает строки в порядке rowid по умолчанию. Надо сильно извергаться, чтобы оправдать порядок отличный от этого.
Элементарно, 8000 активных сессий, 1024 CPU

> Остаются запросы с сортировкой по выражению с повторяющимися значениями. Поскольку методы сортировки Оракла не являются стабильными*, детерминизм можно вернуть досортировав по rowid.

А еще есть NLS Bomb...
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011816
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Добавлять колонки нельзя.

По какой причине? Добавление суррогатного ключа здесь напрашивается как наиболее разумное решение.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011832
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НеофитSQL
Остаются запросы с сортировкой по выражению с повторяющимися значениями. Поскольку методы сортировки Оракла не являются стабильными* ...

* Стабильность сортировки это свойство, относящееся к обработке одинаковых значений.

Хоспади, какая бредятина.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011860
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL

Комментарии прочитаны и приняты.

...но, к сожалению, не осознаны

НеофитSQL

Order by rowid вполне подходит

rowid, если уж Вы рассмотрели его структуру, суть указатель на физическое размещение строки.
Одно это должно было заставить Вас заподозрить подвох.
Дальше неплохо бы знать пару кое-что про выделение места в табличных пространствах oracle rdbms, но для этого - увы и ах - надо было читать документацию.
Есть как минимум три вещи, не позволяющие считать rowid монотонно возрастающим, и которые Вы никогда не сможете осознать на базе эспериментов над парой тысяч строк:
1. Обычное (не bigfile) табличное пространство может состоять (и обычно состоит) из нескольких файлов данных, заполняемых +-равномерно.
В этом месте отсылаю к той самой структуре rowid, а именно - к компоненте "номер файла данных".
2. Место под хранение в табличном пространстве выделяется экстентами. Механизмов выделения экстентов исторически есть несколько штук, но в контексте обсуждаемого вопроса следует знать, что любой из них предпочтет расширению табличного пространства выделить место там, где оно есть по факту.
Тут снова отсылаю к структуре rowid, компонент - номер блока.
3. Если вставка осуществляется conventional insert (т.е. без применения механизмов direct/append), то механика oracle предпочтет вставить новые строки в те блоки, которые значатся у него как свободные (т.е. не забитые под завязку). Этих механизмов тоже исторически есть несколько штук, но все они также работают на более плотную упаковку данных. Компоненты "Номер файла", "номер блока".

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

НеофитSQL

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

Не очень понятно что такое "индексный запрос".
Подозреваю, что, не владея терминологией, Вы таким образом обозначили целый класс методов доступа к данным посредством btree-индекса (index full scan {ascending|descending}, index fast full scan, index range scan {ascending|descending}, index unique scan).
Эти методы работают по разному, но есть одно общее свойство: ни один из них не будет возвращать данные в порядке rowid, поскольку btree-индексы по природе своей упорядочены по атрибутам, входящим в индекс - это важно.
Подозреваю также, что с толку сбило упоминание о том, что btree отсортированы binary. Но осмысление этого замечание требует в дополнение к концептам и руководствам по разработке осознания еще одного фолианта - globalization support guide , без которого рассуждать на данные темы смысла нет.

Опустим пока тот незамысловатый факт, что индексы oracle одним btree не ограничиваются и включают в себя bitmap, function-based и доменные индексы (к примеру, Oracle Text и Oracle Spatial, про кастомные реализации ODCIIndex и говорить пока не стоит).

НеофитSQL

Не удивлюсь, если "select * from TABLE" уже и так возвращает строки в порядке rowid по умолчанию. Надо сильно извергаться, чтобы оправдать порядок отличный от этого.

Меньше знаешь - крепче спишь.
На поверхности:
- экстенты сегмента таблицы могут быть расположены в нескольких файлах данных
- доступ может быть распараллелен
- метод доступа может измениться

НеофитSQL

кластерные грабли

Кластер кластеру люпус эст.
Есть кластер как метод хранения данных, способный задать строкам разных таблиц один rowid.
Есть RAC, в котором и без того не очень простые процессы добычи данных становятся еще сложнее ввиду кластерных взаимодействий (cache fusion).

Общее замечание: oracle rdbms - штука сложная.
Очень сложная.
А еще - это черный ящик, в который мы иногда подглядываем через различные технологические отверстия.
Даже признанные специалисты с многолетним бэкграундом не всегда знают "как наше слово отзовется".
Потому не стоит делать серьезные выводы на основании пары простеньких экспериментов - Вы исследовали более чем ограниченную локацию и обобщения элементарно некорректны.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011876
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
Не очень понятно что такое "индексный запрос".
Есть подозрение, что он имеет ввиду IOT и UROWID, который действительно можно считать упорядоченным (содержит значение первичного ключа)
Но, как обычно, видит только малую часть -- IOT не очень часто используемая вещь и даже в IOT метод доступа IFFS (Index Fast Full Scan) плюет на UROWID и, соответственно, любое упорядочевание
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011895
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров
Есть подозрение, что он имеет ввиду IOT и UROWID

Эт вряд ли :)
НеофитSQL
есть таблица, в которой владелец не предусморел первичного ключа
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011909
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров
НеофитSQL
Order by rowid вполне подходит для такой полевой кухни, хотя позже я узнал, что этот порядок уже и так является по умолчанию для индексных запросов
Вот это про что сейчас было?



https://docs.oracle.com/cd/B13789_01/server.101/b10752/optimops.htm
"Multiple rows with identical values are sorted in ascending order by rowid."


> И собственно, если ты решил, что более поздние строки имеют больший ROWID, то ты таки хреново рассмотрел структуру ROWID

Таких гарантий нет,т.к. rowid удаленных строк может использоваться для новых Однако у меня получилось создать клон таблицы с одинаковым порядком rowid для моих временных целей, ь.к. в новой таблице rowid аллокируется в возрастающем порядке.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011913
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
для моих временных целей
... и в вашей тестовой однопользовательской среде.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011914
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
у меня получилось создать клон таблицы с одинаковым порядком rowid для моих временных целей, ь.к. в новой таблице rowid аллокируется в возрастающем порядке.

рукалицо...
andrey_anonymous
не стоит делать серьезные выводы на основании пары простеньких экспериментов - Вы исследовали более чем ограниченную локацию и обобщения элементарно некорректны.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011921
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vadim Lejnin,

> А еще есть NLS Bomb...

К чему это? Порядок сортировки по rowid как раз не зависит от NLS settings.

Про 1024 процессоров не знаю; документация оракла раньше обсуждала детерминизм строчек как если бы многопроцессорность не влияла на результаты исполнения отдельного запроса.

Это все легко проверить контрпримером: словить один единственный случай, когда строки возвращаемые запросом без сортировки не следуют порядку rowid. Сортировка по умолчанию - это тема которая быстро вызывает гипертонию у начитанных специалистов, я предпочитаю не не развивать. Для индексных запросов оракл гарантирует определенный порядок по умолчанию, насчёт других я не знаю.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011931
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
... Для индексных запросов оракл гарантирует определенный порядок по умолчанию...

Конечно нет , без указания явного order by.
Но иногда результат бывает похожим.

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

Почитайте про "поиск по rowid" и подумайте о пределах предоставляемых гарантий для "индексных запросов",
даже с оговоркой на то, что параллельных запросов у вас никогда не будет, и дезорганизация порядка от параллельности не приедет.

А с учетом расширения вариаций доступа в новых версиях до rowid batched и clustered by rowid - чисто смехотворное упорство,
которому давно следовало бы поискать лучшее применение.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011932
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Вячеслав Любомудров
пропущено...
Вот это про что сейчас было?



https://docs.oracle.com/cd/B13789_01/server.101/b10752/optimops.htm
"Multiple rows with identical values are sorted in ascending order by rowid."
Дибил, прости хоспадиЧувак, ты разочаровал. Куча пафоса и совершенно из другой области утверждение
Ты бы хоть полную цитату приводил
" target="_blank" rel="ugc">https://docs.oracle.com/cd/B13789_01/server.101/b10752/optimops.htm#45076]|> https://docs.oracle.com/cd/B13789_01/server.101/b10752/optimops.htm Index Range Scans
An index range scan is a common operation for accessing selective data. It can be bounded (bounded on both sides) or unbounded (on one or both sides). Data is returned in the ascending order of index columns. Multiple rows with identical values are sorted in ascending order by rowid.
Это тебе еще предстоит узнать, что не бывает неуникальных индексов -- просто в этом случае как поле сортировки ( при совпадающих остальных полях ) используется ROWID записи, ну просто потому, что он так и так является частью индекса
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011933
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
проверить контрпримером: словить один единственный случай, когда строки возвращаемые запросом без сортировки не следуют порядку rowid.

Держи на бедность:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SQL> select rowid, dbms_rowid.rowid_relative_fno(rowid) fno, dbms_rowid.rowid_block_number(rowid) blk from dropme_t;
 
ROWID                     FNO        BLK
------------------ ---------- ----------
AABKoNACAAAADDbAAA        128      12507
AABKoNACAAAADDbAAB        128      12507
AABKoNACAAAADDbAAC        128      12507
AABKoNACAAAADDbAAD        128      12507
AABKoNAB/AAADCPAAC        127      12431
AABKoNAB/AAADCPAAD        127      12431
AABKoNAB/AAADCPAAE        127      12431
AABKoNAB/AAADCPAAF        127      12431
AABKoNAB/AAADCPAAG        127      12431
 
9 rows selected
 
SQL> 
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011967
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL

Это все легко проверить контрпримером: словить один единственный случай, когда строки возвращаемые запросом без сортировки не следуют порядку rowid. Сортировка по умолчанию - это тема которая быстро вызывает гипертонию у начитанных специалистов, я предпочитаю не не развивать. Для индексных запросов оракл гарантирует определенный порядок по умолчанию, насчёт других я не знаю.

Ты немножко не с той стороны зашел. RowId - это техническая лабуда вроде номера физического сектора файла на диске.
И к ней нельзя привязывать бизнес-запросы. Это все равно что тебя интересовал-бы номер физического сектора на диске.
Или значение указателя в С++ приложении.

Если тебе нужно чтобы просто данные не менялись между запросами - ну посмотри set transaction read only.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011983
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous
НеофитSQL
проверить контрпримером: словить один единственный случай, когда строки возвращаемые запросом без сортировки не следуют порядку rowid.

Держи на бедность:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SQL> select rowid, dbms_rowid.rowid_relative_fno(rowid) fno, dbms_rowid.rowid_block_number(rowid) blk from dropme_t;
 
ROWID                     FNO        BLK
------------------ ---------- ----------
AABKoNACAAAADDbAAA        128      12507
AABKoNACAAAADDbAAB        128      12507
AABKoNACAAAADDbAAC        128      12507
AABKoNACAAAADDbAAD        128      12507
AABKoNAB/AAADCPAAC        127      12431
AABKoNAB/AAADCPAAD        127      12431
AABKoNAB/AAADCPAAE        127      12431
AABKoNAB/AAADCPAAF        127      12431
AABKoNAB/AAADCPAAG        127      12431
 
9 rows selected
 
SQL> 



"На бедность".

Мне так и не удалось создать таблицу которая размещалась бы в двух или более файлах.
Как вы это сделали?

Я даже прошерстил всю рабочую данных, каждая таблица умещается ровно в один файл.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SQL> set serveroutput on
SQL> 
SQL> declare
  2    n integer := 0;
  3  begin
  4    for utrow in (select * from USER_TABLES where tablespace_name = 'USERS' order by table_name)
  5    loop
  6      execute immediate 'select distinct dbms_rowid.rowid_relative_fno(rowid) from ' || utrow.table_name;
  7      if SQL%ROWCOUNT > 1 then n := n+1; end if;
  8    end loop;
  9    dbms_output.put_line( n );
 10  end;
 11  /
0
PL/SQL procedure successfully completed

SQL> 
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011985
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL

Мне так и не удалось создать таблицу которая размещалась бы в двух или более файлах.
Как вы это сделали?

Создал таблицу.
Наполнил данными, обеспечив выделение нескольких экстентов.
Никаких - подчеркиваю - фокусов, это штатное поведение.
Концепты надо изучать.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011986
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
select * from USER_TABLES where tablespace_name = 'USERS'

Убедитесь, что Ваше табличное пространство состоит более чем из одного файла.
dba_data_files
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011991
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous
НеофитSQL
проверить контрпримером: словить один единственный случай, когда строки возвращаемые запросом без сортировки не следуют порядку rowid.

Держи на бедность:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SQL> select rowid, dbms_rowid.rowid_relative_fno(rowid) fno, dbms_rowid.rowid_block_number(rowid) blk from dropme_t;
 
ROWID                     FNO        BLK
------------------ ---------- ----------
AABKoNACAAAADDbAAA        128      12507
AABKoNACAAAADDbAAB        128      12507
AABKoNACAAAADDbAAC        128      12507
AABKoNACAAAADDbAAD        128      12507
AABKoNAB/AAADCPAAC        127      12431
AABKoNAB/AAADCPAAD        127      12431
AABKoNAB/AAADCPAAE        127      12431
AABKoNAB/AAADCPAAF        127      12431
AABKoNAB/AAADCPAAG        127      12431
 
9 rows selected
 
SQL> 



Интересно, какая у вас версия Оракла?

У меня не получается декодировать вышеперечисленные ROWID.
Например, "AABKoNAB/AAADCPAAC" декодируется (басе-64) в

00004aa0 d00 1fc00000c23c000

12431 это 0х308F, 127 это 0x7F - это легкозаметные в шестнадзатеричномсочетания бит отсутствуют.

Кроме Base-64, я не нашел других систем кодировок. Как эти ROWID сформированы?
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011994
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous
НеофитSQL
select * from USER_TABLES where tablespace_name = 'USERS'

Убедитесь, что Ваше табличное пространство состоит более чем из одного файла.
dba_data_files


Точно. Всего один файл USERS.DBF, у меня какая-то игрушечная БД что ли? :)
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011996
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
У меня не получается декодировать вышеперечисленные ROWID.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SQL> select dbms_rowid.rowid_to_restricted('AABKoNAB/AAADCPAAC',0)
  2  from dual;
 
DBMS_ROWID.ROWID_TO_RESTRICTED
------------------------------
0000308F.0002.007F
 
SQL> 
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011997
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Всего один файл USERS.DBF, у меня какая-то игрушечная БД что ли? :)
Понятия не имею.
В промышленных БД редко держат данные в users, обычно создают табличные пространства под задачу.
dba_tablespaces

Подозреваю, что users - default tablespace используемой схемы, только и всего.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40011999
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL

У меня не получается декодировать вышеперечисленные ROWID.
Например, "AABKoNAB/AAADCPAAC" декодируется (басе-64) в

00004aa0 d00 1fc00000c23c000

12431 это 0х308F, 127 это 0x7F - это легкозаметные в шестнадзатеричномсочетания бит отсутствуют.

Кроме Base-64, я не нашел других систем кодировок. Как эти ROWID сформированы?

Тебе это зачем? Тебе человек дал пакет dbms_rowid - вот и используй его! Тыж с Ораклом
работаешь а не с абстрактным SQL. И вопрос 100% оракловый.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40012004
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
НеофитSQL

Это все легко проверить контрпримером: словить один единственный случай, когда строки возвращаемые запросом без сортировки не следуют порядку rowid. Сортировка по умолчанию - это тема которая быстро вызывает гипертонию у начитанных специалистов, я предпочитаю не не развивать. Для индексных запросов оракл гарантирует определенный порядок по умолчанию, насчёт других я не знаю.

Ты немножко не с той стороны зашел. RowId - это техническая лабуда вроде номера физического сектора файла на диске.
И к ней нельзя привязывать бизнес-запросы. Это все равно что тебя интересовал-бы номер физического сектора на диске.
Или значение указателя в С++ приложении.

Если тебе нужно чтобы просто данные не менялись между запросами - ну посмотри set transaction read only.


Они уже не меняются, база спящая / учебная.

Ваш пример с диском кстати удачный. Еще не так давно, dir давал неупорядоченный список файлов по умолчанию, в физическом порядке в котором они перечислены в блоках директории. Поведение предсказуемое и повторимое, а также задокументированное.
То же самое в линуксе, ls -u дает физический порядок имен файлов, который неизменен на read-only носителе.

Упорядоченный по имени список файлов (Вин10) меня тоже устраивает, т.к. имя файла в директории обладает уникальностью, и порядок неоднозначно установлен. А вот сортировка по размеру, дате или другому возможно повторяющемуся параметру не годится для анализа, т.к. две идентичные директории могут показать файлы в отличающемся порядке.

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

select * from TBL х where x.val between 10 and 20

всегда даст строчки в одном и том же порядке при наличии индекса для val (группа val=10 упорядоченная по rowid, потом группа 11, и т.д.), но это скорее исключения которые представляют академический интерес.

Узнав многое в этой теме, я согласен что rowid может обеспечивать определенный порядок на какое-то неизвестное время, и не для всех таблиц. С точки зрения изучения данных таблицы недоступной для записи, самое простое и надежное решение - сделать копию данных и добавить первичный ключ. Этот порядок созданный при, или вскоре после копирования, будет гарантированным на неограниченное время.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40012005
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
НеофитSQL

У меня не получается декодировать вышеперечисленные ROWID.
Например, "AABKoNAB/AAADCPAAC" декодируется (басе-64) в

00004aa0 d00 1fc00000c23c000

12431 это 0х308F, 127 это 0x7F - это легкозаметные в шестнадзатеричномсочетания бит отсутствуют.

Кроме Base-64, я не нашел других систем кодировок. Как эти ROWID сформированы?

Тебе это зачем? Тебе человек дал пакет dbms_rowid - вот и используй его! Тыж с Ораклом
работаешь а не с абстрактным SQL. И вопрос 100% оракловый.


Праздное любопытство, ничего более.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40012011
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous
НеофитSQL
У меня не получается декодировать вышеперечисленные ROWID.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SQL> select dbms_rowid.rowid_to_restricted('AABKoNAB/AAADCPAAC',0)
  2  from dual;
 
DBMS_ROWID.ROWID_TO_RESTRICTED
------------------------------
0000308F.0002.007F
 
SQL> 



Спасибо, теперь все понятно.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40012012
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL

Упорядоченный по имени список файлов (Вин10) меня тоже устраивает, т.к. имя файла в директории обладает уникальностью, и порядок неоднозначно установлен. А вот сортировка по размеру, дате или другому возможно повторяющемуся параметру не годится для анализа, т.к. две идентичные директории могут показать файлы в отличающемся порядке.

В Windows 10 при файловой системе NTFS, файлы в директории лежат как B+Tree по имени файлов беря в качестве ключа имя файла.
Тоесть это сортированная структура. Попробуй зайди в каталог c:\Windows и сделай dir без параметров.
Ты увидишь какраз итерацию по этой сортированной структуре. Тоесть порядок стабилен до тех пор
пока никто не всунул новый файл.

А если это будет флешка отформатированная под FAT-32 то там будет порядок как "бог даст".
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40012013
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40012016
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НеофитSQL
Кодеры Оракла приняли воинствующую позу по этому вопросу

Воинствующий здесь только ты, нежелание понять хотя бы самые базовые концепции просто потрясающее.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40012017
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Кодеры Оракла приняли воинствующую позу по этому вопросу, чтобы обезопасить новичков от дорогих ошибок, и фраза "если нужен какой-то определенный порядок, только сортировка по уникальному ключу его обеспечит".
Мы знаем из документации что это не совсем так, например

select * from TBL х where x.val between 10 and 20

всегда даст строчки в одном и том же порядке при наличии индекса для val (группа val=10 упорядоченная по rowid, потом группа 11, и т.д.)

Вас же не затруднит привести ссылку на документацию, которая это подтвердит.
По секрету скажу, что это в общем случае тоже неправда, в отсутствие order by наличие индекса порядок не гарантирует.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40012019
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,

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

На игрушечной базе, где всегда одна сессия...




Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
SQL> select * from dropme_t where val between 10 and 20;
 
       VAL
----------
        20
        19
        18
        17
        16
        15
        14
        13
        12
        11
 
10 rows selected
 
 
SQL> select * from dropme_t where val between 10 and 20;
 
       VAL
----------
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
 
10 rows selected
 
SQL> select index_name, table_name, column_name, descend from user_ind_columns where table_name like 'DROPME_T';
 
INDEX_NAME   TABLE_NAME COLUMN_NAME  DESCEND
------------ ---------- ------------ -------
DROPME_T$VAL DROPME_T   VAL          ASC
 
SQL> 
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40012048
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous
НеофитSQL
Кодеры Оракла приняли воинствующую позу по этому вопросу, чтобы обезопасить новичков от дорогих ошибок, и фраза "если нужен какой-то определенный порядок, только сортировка по уникальному ключу его обеспечит".
Мы знаем из документации что это не совсем так, например

select * from TBL х where x.val between 10 and 20

всегда даст строчки в одном и том же порядке при наличии индекса для val (группа val=10 упорядоченная по rowid, потом группа 11, и т.д.)

Вас же не затруднит привести ссылку на документацию, которая это подтвердит.
По секрету скажу, что это в общем случае тоже неправда, в отсутствие order by наличие индекса порядок не гарантирует.



Ссылка есть, правда для 10.х.

https://docs.oracle.com/cd/B13789_01/server.101/b10752/optimops.htm

Index Range Scans
An index range scan is a common operation for accessing selective data. It can be bounded (bounded on both sides) or unbounded (on one or both sides). Data is returned in the ascending order of index columns. Multiple rows with identical values are sorted in ascending order by rowid.

Я это перевел как написал выше. В то же время, анонимный Андрей ибн Москва же опубликовал пример ниже, противоречащий этому утверждению.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40012050
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous
env
andrey_anonymous,

На игрушечной базе, где всегда одна сессия...




Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
SQL> select * from dropme_t where val between 10 and 20;
 
       VAL
----------
        20
        19
        18
        17
        16
        15
        14
        13
        12
        11
 
10 rows selected
 
 
SQL> select * from dropme_t where val between 10 and 20;
 
       VAL
----------
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
 
10 rows selected
 
SQL> select index_name, table_name, column_name, descend from user_ind_columns where table_name like 'DROPME_T';
 
INDEX_NAME   TABLE_NAME COLUMN_NAME  DESCEND
------------ ---------- ------------ -------
DROPME_T$VAL DROPME_T   VAL          ASC
 
SQL> 



Эксперимент решает все. Андрей, а что вы сделали, чтобы два одинаковых запроса на таблице с индексом вернули строки в разном порядке? Я так не умею
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40012056
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
чтобы два одинаковых запроса на таблице с индексом вернули строки в разном порядке?

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

Полагаю, через время Вы откроете для себя насколько дохрена не знаете/не умеете.
Примите как факт: нельзя строить код на side-эффектах, в частности - нельзя строить код, зависящий от порядка строк, без закрепления посредством order by.
Нель-зя.
Точка.

Применительно к примеру: да, в документации написано правильно.
IRS действительно выдаст binary-ordered.
Не обязательно ascending, но это детали.
Однако приведенная Вами цитата касается IRS ASC и только IRS ASC.
Причем исключительно в NOPARALLEL.
Если оптимизатор примет решение использовать именно его - Вы угадали.
А вот если решит иначе (время от времени это реально происходит) - то будет нежданчик.
Причин, по которым оптимизатор применит иной метод доступа, достаточно много и не все из них самоочевидны. Одна из таких причин была мной спровоцирована в этом демо.
Причем не суть важно какая из - докопаетесь до одной, я спровоцирую другую и все равно покажу Вам, что все несколько сложнее, чем представляется.
Именно поэтому утверждение "порядок гарантирует order by и исключительно order by" верно.
Если и сейчас не сумел донести эту простую мысль - то уже просто не знаю, как быть...
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40012061
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильный Вася
Он может решить, что и без индекса хороший план получился для выполнения запроса.

Верно, но не полно.
Даже с использованием одного и того же индекса можно получить весьма различный порядок строк.
...
Рейтинг: 0 / 0
Строгий порядок строк в чужой таблице
    #40012073
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей-баптист, я принимаю вашу веру. Числа подвохов не перечесть, легче order by PK.
...
Рейтинг: 0 / 0
61 сообщений из 61, показаны все 3 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Строгий порядок строк в чужой таблице
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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