|
|
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
За годы работы с Ораклом у меня накопилось множество заметок, ссылок и прочих материалов, информацию из которых я оформил в виде книги. The Power of Oracle SQL После мучительных размышлений на каком языке писать я таки решил сначала изложить на русском, но содержание осталось на английском. Содержание Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. По некоторым конструкциям (model, recursive subquery factoring) в рунете доступно описание только базовых вещей, а по pattern matching вообще практически никаких материалов нет. Цель была максимально всесторонне описать возможности оракловой реализации конструкции SELECT, при этом стремясь к простоте насколько это возможно и минимизации лишних деталей. Под лишними деталями понимается * внутренности оракла от защелок до принципа работы буфферного кеша * оптимизация работы операций плана, например, nested loops batching * различные баги и кривизна текущей реализации, от wrong results и ORA-03113 до возникновения чтений блоков в режиме currect при большом числе проходов в recursive subquery factoing * прочие моменты, при углублении в которые, объем заметно бы вырос, например, особенности производительности сортировки при использовании аналитических функций * какие-то недоработки SQL парсера: возможность менять местами anchor and recursive members для recursive subquery factoring, возможность перечислять несколько connect by подряд, из которых все, кроме последнего будут проигнорированы итд * все остальное, что не меняет сути По простому говоря фокус был на имеющейся мощи для получения данных. Комментарии и корректировки приветствуются. Огромная благодарность RA\/EN, andrey_anonymous, andreymx за их отзывы и замечания. PS. Книга из двух частей. Вторую часть планирую закончить позже в феврале. tagsnative syntax traditional oracle outer joins syntax ansi left right full cross inner equi theta natural semi anti start with connect by prior nocycle level connect_by_iscycle sys_connect_by_path connect_by_root connect_by_isleaf search depth breadth first by set model dimension measures rules return updated rows return all rows currentv cv update upsert all upsert sequential order automatic order iteration_number previous reference unique dimension unique single reference presentv presentnnv ignore nav keep nav match_recognize pattern define all rows per match one row per match final running match_number classifier with unmatched rows show empty matches omit empty matches after match skip Ссылка: The Power of Oracle SQL. All versions ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 05:45 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, пошел читать... З.Ы. Как вторую часть допишешь - сообщить не забудь. Обязательно почитаю и её тоже. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 05:50 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, Было бы интересно узнать твоем мнение, учитывая что ты как и я достаточно много времени посвятил MSSQL и есть с чем сравнивать. Кстати, изначально планировал еще три главы Сравнение возможностей SELECT для Oracle vs MSSQL. По причине наличия явного лидера и во избежания холивара отказался от затеи. SQL для работы с графами. Это исключил, т.к. SQL это НЕ для работы с графами за исключением вырожденных случаев. С другой стороны анализ процедурного и декларативного подходов потребовал бы много текст и кода. А на самом деле есть Graph Databases. Желающим расширить кругозор - рекомендую Next Generation Databases - Guy Harrison . Особенности DML в Oracle. Например, про update при наличии join или conventional vs direct path inserts и подобное. Это всё есть в блогах известных товарищей и прочих местах и заниматься просто компиляцией несколько нудно. А главное эти три темы выходят за рамки основной идеи книги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 06:12 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, Отдельное спасибо за model! Да и вообще за книгу в целом! Взял на вооружение :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 11:15 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 12:24 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, спасибо, читаемс) замечанию тут собирать будешь или лучше на почту?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 12:28 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, буду писать сразу как читаю. иначе забуду. 1. пронумеруй, пожалуйста примеры. на странице 8 сложновато читать что там первый третий что второй пятый.... номера примеров должны быть. 2. страница 9 запрос: Код: plsql 1. 2. 3. 4. ничем не отличается от запроса Код: plsql 1. 2. 3. поэтому тестовые данные для нормального осознания отличий должны быть хотя бы такие: Код: plsql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 13:05 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
Vintdbms_photoshop, спасибо, читаемс) замечанию тут собирать будешь или лучше на почту?)Предпочтительнее одним письмом все и сразу в почту. Форма свободная. Точно не стоит обращать внимание на грамматику и пунктуацию, хотя, уверен, ты бы этого и не делал. Вторая часть, где будут конкретные примеры, больше предполагает обсуждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 13:16 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
Vint...Принято. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 13:20 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, ок. тогда буду выписывать себе в отдельный документ потом пришлю) правда думаю до конца недели точно читать буду)) если честно немного тяжеловато написано. ну или мозги у меня немного в паутине)) заодно и уборку проведу)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 13:20 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopВторая часть, где будут конкретные примеры задачиFixed. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 13:26 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
Vintесли честно немного тяжеловато написаноПосле главы про джойны легче пойдет. Инфа 146%. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 13:51 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
Круто. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 14:05 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
жалко, что не освещена тема adaptive query optimization. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 14:10 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
хотя наверное это усложнит ей, хотя по ней запросы весьма существенно переписываются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 14:29 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
Shtockжалко, что не освещена тема adaptive query optimization.Когда человек анализирует как лучше написать запрос он не очень то думает про adaptive query optimization, не так ли? То есть, это, опять же, несколько выходит за концепцию книги. Ну и, во-вторых, в англо-интернетах достаточно качественного материала. Вот понимание про наличие трансформаций может значительно помогать при написании запросов. Читая про них можно встретить. В Oracle 12c для воспроизведения надо отключить адаптивные планы с помощью команды «alter session set optimizer_adaptive_reporting_only = true;»То есть, я предпочитаю не усложнять без надобности. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 14:45 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, Можно было бы указать какие версии подходят под твой мануал. Еще думаю, можно было бы включить рассмотрение TOP - N и "новых" фич SQL типа OFFSET, FETCH FIRST WITH TIES, CROSS APPLY / OUTER APPLY и их применение) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:08 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
ora601dbms_photoshop, Можно было бы указать какие версии подходят под твой мануал. Еще думаю, можно было бы включить рассмотрение TOP - N и "новых" фич SQL типа OFFSET, FETCH FIRST WITH TIES, CROSS APPLY / OUTER APPLY и их применение)Про версии сказано во вступлении. Про CROSS APPLY / OUTER APPLY описано в главе про соединения. Про новые фичи множество статей. Хорошая подборка из 5-ти частей - в гугл "Ask Tom: On Oracle Database 12c, Part". В целом, фичи, которые расширили возможности SQL, полагаю, упомянуты: усовершенствования для joins и pattern matching. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:24 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
распространяется бесплатно ? а где тогда кнопка "поддержать автора" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:32 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
grokраспространяется бесплатно ? а где тогда кнопка "поддержать автора" ?Всё бесплатно, без рекламы и смс. Автор будет благодарен отзывам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:43 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
Спасибо, на работе начал читать Сразу -- не очень формализировано, что ли, разъяснена разница в post- и pre- предикатах в описании соединений Что, когда, исключения... (одно описано достаточно интересно) Ну и операция FILTER -- я ее так и не смог формализовать, что у Льюиса, вот думал хоть здесь, на понятном русском. Похоже, она выполняет все, на что не нашлось других названий (проскочила фраза, типа "отборка по критерию из другого источника", но это как-то слишком общно, на мой взгляд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:53 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, Познавательно, спасибо. Буду ждать второй части. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 17:03 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровСразу -- не очень формализировано, что ли, разъяснена разница в post- и pre- предикатах в описании соединенийДопускаю, что не очень формализированно, но мне казалось достаточно конкретно и понятно. Еще была мысль при введении специфических Оракловых терминов сделать сноски со ссылками на ноты для желающих полной формальности. pre/post join predicates (Doc ID 14736.1) transitive closure (Doc ID 68979.1) Это добавлю. Вячеслав ЛюбомудровНу и операция FILTERВот это зачетная тема, и если раскрывать, то надо выделять методы соединения в отдельную главу. Я полагаю механика работы похожа на nested loops, то-есть для каждой строки выполняется грубо говоря look-up. Но есть отличия - nested loops связывает два набора, а фильтров (и соответственно выполнения связанного набора) может быть несколько, при этом один набор основной. - в фильтре может быть скоррелирован более хитрый запрос (точнее это было актуально до появления lateral views), например, connect by. Код: plsql 1. 2. 3. 4. 5. Возникает, при наличии подзапросов в where, которые не были трансформированы. Ясно дело, до формализации тут еще далеко. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 18:11 |
|
||
|
The Power of Oracle SQL
|
|||
|---|---|---|---|
|
#18+
Кстати, наверное нет смысла уже это упоминать, но у transitive closure в 9 (10?) был очень нехороший эффект -- чрезмерное размножение предикатов и, как следствие, неправильная оценка кардинальности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 18:17 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39396507&tid=1884482]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 357ms |

| 0 / 0 |
