powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
20 сообщений из 20, страница 1 из 1
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
    #39392827
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему ФБ игнорирует абсолютно все планы запросов - не только для <main-query>, но и для <cte-defs>? ИМХО, игнорировать план запроса для <cte-defs>, это неправильно, так как запросы в <cte-defs> довольно "стабильны" даже внутри представления. Если я не прав, хотелось бы увидеть пример применения обратного.
Еще смежный вопрос - как при выборке из представления на базе рекурсивного cte принудительно задать план запроса не только для инициирующего рекурсию запроса, но и для последующих, указанных после UNION ALL?
...
Рейтинг: 0 / 0
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
    #39392852
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
    #39392866
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, спасибо! Про подобное использование "дереватива" я, как-то, сразу не смекнул.
...
Рейтинг: 0 / 0
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
    #39392875
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисникак. План вообще конструкция устаревшая и многие методы доступа с помощью него не запишешь. Уже давно идёт обсуждение в пользу хинтов.Как будут обстоять дела с этим в "четверке"?
...
Рейтинг: 0 / 0
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
    #39392892
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

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

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

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

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

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

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

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

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

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

Если на твою аналогию полагаться, то машина с автопилотом никогда не свернёт в лес на полянку для шашлыка. Придётся жрать только в оборудованных местах.
...
Рейтинг: 0 / 0
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
    #39393223
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис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
Вопрос про планы выполнения запросов в представлениях на базе рекурсивных CTE
    #39393237
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery,

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


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