Все недостатки вложенных запросов

1. Maxisussr 15.03.18 09:53 Сейчас в теме
Недавно услышал такой вопрос. И кроме того, что "оптимизатор может построить неверный план запроса, т.к. не найдет статистику по вложенному запросу", не смог ничего ответить.
Подскажите из опыта - у кого что есть по этому вопросу ?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
12. ЧерныйКот 15.03.18 12:29 Сейчас в теме
(1) недавно столкнулся :
в запросе использовался вложенный запрос, во вложенном объединение ВТ с вложенным, в котором та же ВТ внутреннесоединялась с таблицей БД.
запрос отрабатывал нормально, а вот в СКД - оптимизация приводила к пустому набору данных при выполнении запроса.
Запрос не мой, очень много времени ушло на разбор этого запроса, вложенные не удобно читать.

Для себя пришел к выводу что вложенные стоит использовать крайне аккуратно.
2. dmt 66 15.03.18 10:08 Сейчас в теме
3. uk09 15.03.18 10:08 Сейчас в теме
Максим, добрый день!

"Все недостатки всех вложенных запросов" ?? Это теоретический вопрос, лучше рассмотреть конкретный трабл. Если интересует именно теория, можно у Чистова почитать
4. Maxisussr 15.03.18 10:48 Сейчас в теме
(3)
Интересуют практические примеры , как оптимизатор может "сломаться" на вложенном запросе.
При условии, что статистика по всем таблицам есть.
5. Dream_kz 129 15.03.18 10:54 Сейчас в теме
(4) Статистики по вложенному запросу не будет, и неизвестно какую таблицу он вернет (по размерам и т.д), соот-но нет статистики, планировщику сложнее
6. Vovan1975 13 15.03.18 10:57 Сейчас в теме
(5) + отсутствие индексирования нужных столбцов что соответственно повлияет на соединения и всякие поиски
9. Maxisussr 15.03.18 11:12 Сейчас в теме
(6) , (8)

Т.е если поля не индексированы и не отсортированы - всегда будет выбрано Nested Loops.
Ну мы это уже понимаем изначально, что там всегда будет такой вид соединения. И он не изменится и сюрпризов тут не будет.
Или иногда может быть выбран Hash Join / Merge Join?
7. Maxisussr 15.03.18 11:04 Сейчас в теме
(4, 5)
Последний скуль уже умеет обрабатывать вложенные запросы.
Про индексы - возможно вы правы.
8. Bazil 559 15.03.18 11:07 Сейчас в теме
(7) Сами по себе вложенные запросы это нормальное решение, проблемы начинаются, когда есть соединение со вложенными запросами.
ЧерныйКот; +1 Ответить
10. mad375 15.03.18 11:21 Сейчас в теме
(8)Там же как костыль есть временные таблицы
13. Bazil 559 15.03.18 12:54 Сейчас в теме
(10) Почему костыль? Инструмент.
11. Dream_kz 129 15.03.18 11:25 Сейчас в теме
(7)
Последний скуль уже умеет обрабатывать вложенные запросы.

есть еще postgres, да и последний ms sql не у всех
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот