| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PostgreSQL > Получение промежуточных данных запроса |
| Автор: Severyanin 19.8.2015, 07:30 |
| Добрый день. Возникла необходимость получения промежуточных данных запроса. Например, у меня есть несколько таблиц и запрос, который делает выборку из них с помощью JOIN. В результате я получаю готовый набор данных. Сейчас у меня задача написать функциональные тесты на такие запросы, соответственно, мне нужно подготовить фикстуры для них и заливать в них всю текущую информацию из таблиц я не могу. Значит, мне нужно каким-то образом получить промежуточные результаты для каждого из подзапросов, чтобы знать, какую часть данных заливать в фикстуры. Примерно что-то вроде explain analyse. но чтобы вместо метрик на каждую операцию выдавала подмножество результатов. Сталктвался ли кто-нибудь с таким инструментом? Спасибо |
| Автор: Akina 19.8.2015, 09:01 |
| А что, подзапросы - недетерминированные? |
| Автор: Severyanin 19.8.2015, 10:09 |
| Часть подзапросов я могу выделить, но часть либо без JOIN выжают все данные, либо с ними выдают пустой результат. Пытаюсь сейчас все это выполнять руками. Думал, что возможно есть для этого что-то вроде EXPLAIN ANALYSE, только чтобы оно показывало не бенчмарки, а данные, чтобы не перелопачивать кучу таких запросов вручную, что будет довольно долго |
| Автор: Akina 19.8.2015, 16:53 |
| Такого не бывает. Просто потому, что промежуточные рабочие данные при выполнении запросов как правило не представимы в виде наборов записей. Да и по сути таковыми не являются. |
| Автор: Severyanin 20.8.2015, 05:49 | ||
| Понятно, спасибо. Тимлид наш просто говорил о подобной тулзе для MsSQLServer, вот я и начал искать Добавлено через 1 минуту и 31 секунду
Не мог бы ты еще поделиться ссылкой на более подробную инфу |
| Автор: Akina 20.8.2015, 09:04 |
Специально никогда не заморачивался на этом вопросе. Если тебя это интересует - начни с углублённого описания планов выполнения запросов и ищи сведения о том, как программно реализуются те или иные методы связывания, отбора, группировки и сортировки, т.е., например, как принятое решение оптимизатора использовать, ну, скажем, nested loop для связывания, трансформируется в программный код его выполнения. Не убеждён, что удастся найти информацию такой глубины для MS SQL, скорее надо искать её для серверов с открытым кодом (например, для MySQL) - принципы везде одни и те же, просто глубина проработки и вариабельность разная. Думаю, эта тулза (если таковая существует, в чём я пока не убеждён) выполняет самостоятельный парсинг запроса и отдельно запрашивает выполнение субструктур, которые ей удалось выделить из текста запроса. |