Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Оптимизатор и коррелированные подзапросы
|
|||
|---|---|---|---|
|
#18+
ASA 8.0.3. Запрос содержит несколько коррелированных подзапросов. Результат, возвращаемый одним из подзапросов, используется в секции WHERE главного запроса. Все выглядит примерно так: Код: plaintext 1. 2. 3. 4. 5. Хотелось бы до конца понять последовательность, в которой сервер выполнит запрос, а именно: 1) в плане выполнения подзапрос, возвращающий q1, обозначен как SubQ2, а q2 - как SubQ1. Означает ли это, что сначала будет выполняться SubQ1, а потом SubQ2 ? 2) будет ли выполняться подзапрос, возвращающий q2, для тех строк из t1, которые не удовлетворяют условию сравнения с q1 (т.е. условию t1.f1 > q1) ? Приветствуются не только конкретные ответы, но и теоретические разъяснения по особенностям выполнения запроса в зависимости от различных факторов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2006, 22:54 |
|
||
|
Оптимизатор и коррелированные подзапросы
|
|||
|---|---|---|---|
|
#18+
Это вообще некорректный SQL. Нельзя ссылаться в WHERE на поле в списке вывода SELECT-а по его алиасу. Надо повторять там подзапрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2006, 23:47 |
|
||
|
Оптимизатор и коррелированные подзапросы
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто вообще некорректный SQL. Нельзя ссылаться в WHERE на поле в списке вывода SELECT-а по его алиасу. Надо повторять там подзапрос. Это было бы ужасно, если б это было правдой Говорилось про ASA, а не ASE! В ASA это вполне корректный запрос. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. В ASE подобное разве не работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2006, 00:15 |
|
||
|
Оптимизатор и коррелированные подзапросы
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто вообще некорректный SQL. Нельзя ссылаться в WHERE на поле в списке вывода SELECT-а по его алиасу. Надо повторять там подзапрос. Что значит "некорректный", если в используемой СУБД он работает, и возвращает корректный результат? В плане имеем MainQuery и два подзапроса (SubQ1, SubQ2). Хотя я и понимаю, чем с логической точки зрения он вам не нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2006, 00:24 |
|
||
|
Оптимизатор и коррелированные подзапросы
|
|||
|---|---|---|---|
|
#18+
Не знал. Но чего же там ужасного ? Не вижу ничего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2006, 08:55 |
|
||
|
Оптимизатор и коррелированные подзапросы
|
|||
|---|---|---|---|
|
#18+
MasterZiv пишет: > Не знал. Но чего же там ужасного ? Не вижу ничего. Теоретически - ничего. Практически - запрос станет короче, прозрачнее, уменьшатся затраты при необходимости внеси исправления в подзапрос и уменьшится вероятность ошибки в этом месте. Например исправили подзапрос в SELECT, но забыли про WHERE. Из кучи таких вот мелочей и складывается понятие developer friendly. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2006, 10:36 |
|
||
|
Оптимизатор и коррелированные подзапросы
|
|||
|---|---|---|---|
|
#18+
A.K. Хотелось бы до конца понять последовательность, в которой сервер выполнит запрос, а именно: Т.к. подобные тонкости не задокументированы, то последовательность можно выяснить лишь опытным путем и только для данного конкретного случая "здесь и сейчас". Поведение может смениться от многих причин. Например от смены номера EBF или даже от изменения гистограммы распределения данных. Если тебе так важна определенная последовательность, то есть смысл попробовать переделать запрос. Например разбить на несколько, воспользоваться хранимыми процедурами и(или) временным таблицами и т.п. P.S. иногда полезно воспользоваться функцией REWRITE. В некоторых случаях подзапросы вообще в джойны разворачиваются еще на этапе переписывания запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2006, 10:55 |
|
||
|
Оптимизатор и коррелированные подзапросы
|
|||
|---|---|---|---|
|
#18+
Мне не столько важна последовательность, сколько непонятно, как читать план выполнения для запроса с подзапросами, и как вообще физически выполняется запрос с подзапросами (вот мы же знаем из документации, к примеру,что соединение таблиц физически может выполняться в виде hash join, nested loops join и т.п., порядок опять же в плане указывается, что слева а что справа для nested loops, и можем это учитывать для написания оптимального запроса). Поэтому минимизирую свой вопрос хотя бы до такого: означает ли порядок нумерации подзапросов в плане (SubQ1, SubQ2, ...) порядок их физического выполнения, или это просто так, циферки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2006, 22:58 |
|
||
|
Оптимизатор и коррелированные подзапросы
|
|||
|---|---|---|---|
|
#18+
A.K.Поэтому минимизирую свой вопрос хотя бы до такого: означает ли порядок нумерации подзапросов в плане (SubQ1, SubQ2, ...) порядок их физического выполнения, или это просто так, циферки? Будет означать цифорки. Единственное что по плану запросов точно - Subquery означает, что указанный в плане запросов подзапросов будет всегда выполнятся на каждую строку результатов основного запроса. А порядок и способ выполнения будет разный и зависеть от способа соединения подзапроса с запросом, при использовании индексов от наличия RAID (возможна организация параллейного чтения и выполнения подзапросов), для 10-ой версии еще от наличия многопроцессорности (распараллеливание выполнения запросов) и т.д. В общем мало ли, что еще понапридумывали разработчики оптимизатора ASA ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 07:05 |
|
||
|
Оптимизатор и коррелированные подзапросы
|
|||
|---|---|---|---|
|
#18+
ASCRUSБудет означать цифорки. Единственное что по плану запросов точно - Subquery означает, что указанный в плане запросов подзапрос будет всегда выполнятся на каждую строку результатов основного запроса. ... Спасибо за разъяснения. Попутный вопрос: какую-либо толковую литературу конкретно по ASA не подскажете? Пофигу, в электронном или бумажном варианте; если нет на русском, то можно и на английском. Конечно, в документации все описано, но в книжках иногда полезные практические советы бывают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 10:39 |
|
||
|
Оптимизатор и коррелированные подзапросы
|
|||
|---|---|---|---|
|
#18+
Самая толковая из всего что видел - это BOL. По нему родимому все тонкости и ньюансы и выискиваются. Еще на РУСУГ лежит ссылочка на книжку Брека Картера, там есть кое какие полезные советы, но все таки в основном книжка хороша для тех, кто первый раз видит ASA. -- www.rusug.ru - портал русскоязычной группы пользователей Sybase ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 16:00 |
|
||
|
|

start [/forum/topic.php?fid=55&fpage=73&tid=2012455]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 334ms |

| 0 / 0 |
