Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE / 20 сообщений из 20, страница 1 из 1
27.01.2017, 11:06
    #39392827
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
Почему ФБ игнорирует абсолютно все планы запросов - не только для <main-query>, но и для <cte-defs>? ИМХО, игнорировать план запроса для <cte-defs>, это неправильно, так как запросы в <cte-defs> довольно "стабильны" даже внутри представления. Если я не прав, хотелось бы увидеть пример применения обратного.
Еще смежный вопрос - как при выборке из представления на базе рекурсивного cte принудительно задать план запроса не только для инициирующего рекурсию запроса, но и для последующих, указанных после UNION ALL?
...
Рейтинг: 0 / 0
27.01.2017, 11:28
    #39392852
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
rdb_dev,

1. явное задание планов зло
2. CTE не есть отдельный запрос, поэтому и план только для CTE задать нельзя. Надо задавать план для запроса целиком. Частичное задание планов запретили ещё в 2.0.

rdb_devЕсли я не прав, хотелось бы увидеть пример применения обратного.

Да запросто

Код: sql
1.
2.
3.
4.
WITH T AS (
   SELECT MyField1, MyField2 FROM MyTable
)
SELECT MyField1 FROM T WHERE MyField2 = 1



На MyField2 есть индекс. Как ты думаешь какой будет общий план? А какой бы ты план смог задать для запроса в CTE?

авторЕще смежный вопрос - как при выборке из представления на базе рекурсивного cte принудительно задать план запроса не только для инициирующего рекурсию запроса, но и для последующих, указанных после UNION ALL?

никак. План вообще конструкция устаревшая и многие методы доступа с помощью него не запишешь. Уже давно идёт обсуждение в пользу хинтов.
...
Рейтинг: 0 / 0
27.01.2017, 11:43
    #39392866
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
Симонов Денис, спасибо! Про подобное использование "дереватива" я, как-то, сразу не смекнул.
...
Рейтинг: 0 / 0
27.01.2017, 11:49
    #39392875
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
Симонов Денисникак. План вообще конструкция устаревшая и многие методы доступа с помощью него не запишешь. Уже давно идёт обсуждение в пользу хинтов.Как будут обстоять дела с этим в "четверке"?
...
Рейтинг: 0 / 0
27.01.2017, 12:03
    #39392892
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
rdb_dev,

это не у меня надо спрашивать. Пока для хинтов ничего не сделано.
...
Рейтинг: 0 / 0
27.01.2017, 13:55
    #39393035
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
Ну а в чём разница между хинтами и планом? Принцип один - директивное указание порядка сканирования записей. Проблема на самом деле в том, что разработчик не вполне может гарантировать правильный директивный план. По-хорошему нужно анализировать данные. При одних данных нужен такой путь, при других другой. И, наверно, лучше полагаться на внутренний механизм сервера выбора плана.
...
Рейтинг: 0 / 0
27.01.2017, 14:00
    #39393043
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
Hello, Kreatorxxi!
You wrote on 27 января 2017 г. 13:59:21:

Kreatorxxi> Ну а в чём разница между хинтами и планом?не знаешь - сиди кури в сторонке.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.01.2017, 14:19
    #39393059
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
Мимопроходящий,

Знаешь - расскажи. Мне будет интересно. Может и другим тоже. Хоть ссылку.
...
Рейтинг: 0 / 0
27.01.2017, 14:25
    #39393066
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
Гусары, молчать!

KreatorXXI, воспользуйся поиском, для начала. Прямого сравнения я не припоминаю, но материалов по обоим темам достаточно.
...
Рейтинг: 0 / 0
27.01.2017, 14:27
    #39393067
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
KreatorXXIИ, наверно, лучше полагаться на внутренний механизм сервера выбора плана.Это теоретически, при идеальном алгоритме выбора плана, корректно учитывающего все аспекты - параметры выборки, их количество, селективность индексов, количество строк таблиц и т.д. На практике же, проектировщику БД, порой, виднее, какой план запроса оптимальнее.
...
Рейтинг: 0 / 0
27.01.2017, 14:29
    #39393070
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
rdb_devНа практике же, проектировщику БД, порой, виднее, какой план запроса оптимальнее.На самом деле это не на практике, а в какой-то мере тоже, теоретически. Для абстрактного идеального проектировщика.
...
Рейтинг: 0 / 0
27.01.2017, 14:35
    #39393080
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
WildSery, ключевое слово "порой". Естественно, что идеальный и безошибочный план запроса для всех выборок из БД может сформировать только "идеальный автомат", каковым человек не является, но это именно в теории... У нас же - чёрные будни практики.
...
Рейтинг: 0 / 0
27.01.2017, 14:36
    #39393081
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
Hello, Rdb Dev!
You wrote on 27 января 2017 г. 14:36:09:

Rdb Dev> У нас же - чёрные будни практики.у вас - розовые сопли всеобщей теории

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.01.2017, 14:41
    #39393090
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
Мимопроходящий, как же без них? Всегда чего-то не хватает... И вот опять!
...
Рейтинг: 0 / 0
27.01.2017, 15:07
    #39393127
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
...
Рейтинг: 0 / 0
27.01.2017, 15:36
    #39393172
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
rdb_dev,

Сейчас тенденция - не полагаться на человека, человек слабое звено. Алгоритм должен быть такой, чтобы система работала без сбоев и проблем. А рассчитывать на сидящего рядом человека, который будет в зависимости от меняющихся условий изменять план - неправильно. Возьмите "Автопилот". Сейчас всё сыровато. Но через лет десять все поедут без руля.
...
Рейтинг: 0 / 0
27.01.2017, 15:53
    #39393196
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
KreatorXXI,

да, да. Вот только все топовые СУБД всё равно прикручивают хинты. А казалось бы у них оптимизатор крутой.
...
Рейтинг: 0 / 0
27.01.2017, 16:13
    #39393214
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
KreatorXXI,

Если на твою аналогию полагаться, то машина с автопилотом никогда не свернёт в лес на полянку для шашлыка. Придётся жрать только в оборудованных местах.
...
Рейтинг: 0 / 0
27.01.2017, 16:19
    #39393223
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
Симонов ДенисKreatorXXI,

да, да. Вот только все топовые СУБД всё равно прикручивают хинты. А казалось бы у них оптимизатор крутой.

Прикручивают, чтобы было. И вот с такими предупреждениями:
Код: sql
1.
2.
3.
Caution

The WITH table-hint clause is an advanced feature that should be used only if needed, and only by experienced database administrators. In addition, the setting may not be respected in all situations.
...
Рейтинг: 0 / 0
27.01.2017, 16:24
    #39393237
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
WildSery,

Ну если сразу едешь на полянку, то свернёт. А если в дороге пос.ать захотелось? Любую ситуацию можно довести до абсурда.
Что касается "автопилота", то, скорее всего, его в первую очередь внедрят для грузовых перевозок. Логистический Центр -> Склад-Магазин.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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