|
Строгий порядок строк в чужой таблице
|
|||
---|---|---|---|
#18+
* ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2020, 20:17 |
|
Строгий порядок строк в чужой таблице
|
|||
---|---|---|---|
#18+
НеофитSQL Кодеры Оракла приняли воинствующую позу по этому вопросу Воинствующий здесь только ты, нежелание понять хотя бы самые базовые концепции просто потрясающее. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2020, 20:44 |
|
Строгий порядок строк в чужой таблице
|
|||
---|---|---|---|
#18+
НеофитSQL Кодеры Оракла приняли воинствующую позу по этому вопросу, чтобы обезопасить новичков от дорогих ошибок, и фраза "если нужен какой-то определенный порядок, только сортировка по уникальному ключу его обеспечит". Мы знаем из документации что это не совсем так, например select * from TBL х where x.val between 10 and 20 всегда даст строчки в одном и том же порядке при наличии индекса для val (группа val=10 упорядоченная по rowid, потом группа 11, и т.д.) Вас же не затруднит привести ссылку на документацию, которая это подтвердит. По секрету скажу, что это в общем случае тоже неправда, в отсутствие order by наличие индекса порядок не гарантирует. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2020, 20:52 |
|
Строгий порядок строк в чужой таблице
|
|||
---|---|---|---|
#18+
andrey_anonymous, На игрушечной базе, где всегда одна сессия... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2020, 21:08 |
|
Строгий порядок строк в чужой таблице
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2020, 21:13 |
|
Строгий порядок строк в чужой таблице
|
|||
---|---|---|---|
#18+
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. Я это перевел как написал выше. В то же время, анонимный Андрей ибн Москва же опубликовал пример ниже, противоречащий этому утверждению. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2020, 23:10 |
|
Строгий порядок строк в чужой таблице
|
|||
---|---|---|---|
#18+
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.
Эксперимент решает все. Андрей, а что вы сделали, чтобы два одинаковых запроса на таблице с индексом вернули строки в разном порядке? Я так не умею ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2020, 23:12 |
|
Строгий порядок строк в чужой таблице
|
|||
---|---|---|---|
#18+
НеофитSQL чтобы два одинаковых запроса на таблице с индексом вернули строки в разном порядке? Да просто наличие индекса не означает его использование Ораклом. Он может решить, что и без индекса хороший план получился для выполнения запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2020, 23:29 |
|
Строгий порядок строк в чужой таблице
|
|||
---|---|---|---|
#18+
НеофитSQL Я так не умею Полагаю, через время Вы откроете для себя насколько дохрена не знаете/не умеете. Примите как факт: нельзя строить код на side-эффектах, в частности - нельзя строить код, зависящий от порядка строк, без закрепления посредством order by. Нель-зя. Точка. Применительно к примеру: да, в документации написано правильно. IRS действительно выдаст binary-ordered. Не обязательно ascending, но это детали. Однако приведенная Вами цитата касается IRS ASC и только IRS ASC. Причем исключительно в NOPARALLEL. Если оптимизатор примет решение использовать именно его - Вы угадали. А вот если решит иначе (время от времени это реально происходит) - то будет нежданчик. Причин, по которым оптимизатор применит иной метод доступа, достаточно много и не все из них самоочевидны. Одна из таких причин была мной спровоцирована в этом демо. Причем не суть важно какая из - докопаетесь до одной, я спровоцирую другую и все равно покажу Вам, что все несколько сложнее, чем представляется. Именно поэтому утверждение "порядок гарантирует order by и исключительно order by" верно. Если и сейчас не сумел донести эту простую мысль - то уже просто не знаю, как быть... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2020, 23:44 |
|
Строгий порядок строк в чужой таблице
|
|||
---|---|---|---|
#18+
Правильный Вася Он может решить, что и без индекса хороший план получился для выполнения запроса. Верно, но не полно. Даже с использованием одного и того же индекса можно получить весьма различный порядок строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2020, 23:48 |
|
|
start [/forum/topic.php?fid=52&msg=40012017&tid=1880769]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
86ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 190ms |
0 / 0 |