Что быстрее выполняется: вложенные запросы или временные таблицы в запросах?

1. newborn 15.04.13 10:27 Сейчас в теме
В некторых случаях можно реализовать запрос с временными таблицами а можно с вложенными запросами. Что быстрее выполняется? В каком случае оптимальнее используется память?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. starjevschik 15.04.13 10:47 Сейчас в теме
(1) newborn, этот вопрос тянет на докторскую. Если база на сиквеле, то там хотя бы можно сделать оба варианта и посмотреть профайлером план выполнения запросов и попробовать из него что-то узнать. Если база файловая, то тайну могут теоретически знать разработчики 1с, но я немного сомневаюсь, что кто-то может ответить на этот вопрос в общем без всякой конкретики.
8. Ibrogim 1313 15.04.13 12:51 Сейчас в теме
(1) newborn, Тут некоторые замеры делались по данному вопросу. Может будет интересно.
2. DenisCh 15.04.13 10:46 Сейчас в теме
Всё зависит от.
Иногда временные таблицы быстрей, иногда вложенные запросы.
Нужно проверять на конкретных базах, конкретных данных и конкретном железе.
Хотя 1с не рекомендует использовать вложенные (не смогли написать оптимизатор?)
5. newborn 15.04.13 12:11 Сейчас в теме
(2) DenisCh,
Кстати, у меня вложенные работают очень неплохо. Я как-то ранее просто не задумывался над этой проблемой, пока не увидел, что то, что я делал на вложенных запросах, другой программист делал на временных таблицах.
4. newborn 15.04.13 11:09 Сейчас в теме
Ну, тогда из опыта: что рекомендует уважаемый ALL?
6. VoShk 22 15.04.13 12:24 Сейчас в теме
(4) newborn, из опыта вложенные чаще бывают быстрей, но иногда лучше пожертовать скоростью в угоду удобочитаемости, а то сами же и не разберётесь через год что и как оно делает...
user955631; +1 Ответить
7. juntatalor 63 15.04.13 12:40 Сейчас в теме
1C рекомендует пакетные запросы с временными таблицами.

От себя добавлю, что если запрос громоздкий, выполнение в виде временных таблиц часто повышает читаемость.
user955631; +1 Ответить
9. newborn 15.04.13 13:17 Сейчас в теме
В том-то и дело, что у мне показалось, что вложенные работают быстрее...
10. Sevens 6 15.04.13 13:52 Сейчас в теме
На самом деле всё зависит от конкретной задачи. Нельзя утверждать со 100% гарантией что во всех случаях быстрее то или это. Я пишу всё на временных таблицах, мне так удобнее их читать и разрабатывать(хотя иногда приходится делать через вложенные, по причине скорости).
Вложенные запросы могут точно так же быстро(а в некоторых случаях и быстрее отрабатывать). Так же временные таблицы хорошо использовать когда идет частое обращение к виртуальной таблице (отобрал 1 раз всё во временную таблицу, а потом крутишь её как хочешь).
11. slights 20.04.13 13:20 Сейчас в теме
На дисках ИТС - есть специальный раздел, посвященный оптимизации запросов :)

В общем случае лучше использовать временные таблицы, тогда улучшается читаемость запросов, появляется возможность многократного использования полученного результата, в большинстве случаев работа со временными таблицами происходит быстрее.

Простые вложенные запросы при использование MS SQL версии могут выполняться быстрее - все-таки в MS SQL встроен оптимизатор выполнения запроса, который может соединить подзапросы быстрее чем если явно будет прописана выборка данных во временную таблицу.... но иногда оптимизатор работает не правильно ;) и тогда запросы без временных таблиц - ну просто тормозят ;)
12. andrewks 1370 20.04.13 14:07 Сейчас в теме
при использовании временных таблиц в громоздких запросах не надо забывать об индексации полей, участвующих потом в соединениях - это может существенно ускорить работу на больших выборках (а может и немного замедлить на маленьких).
vlakur1; juntatalor; slights; +3 Ответить
14. пользователь 16.06.21 12:56
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

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