А именно:
-Сохранение результата запроса в файл;
-Возможность выборки из сохраненного файла;
-Замеры времени выполнения отдельных временных таблиц в запросе;
-Подготовка текста запроса к помещению в модуль;
-Проверка запроса на не уничтоженные временные таблицы;
В последнее время очень регулярно приходится писатьпереписыватьдописывать сложные запросы, содержащие в себе море расчётов. Но хуже всего, что данные запросы вытягивают большие объемы данных, и время выполнения порой затягивается на минуты и десятки минут. И тут я оснастил свою консоль инструментами, которые помогают мне с комфортом решать ряд задач.
1. Например, у меня есть какой-то отчет (запрос), который мне нужно оптимизировать. Я пишу свой, новый запрос. Который работает быстрее. Но мне надо убедиться, что результат идентично правильный. Что делать?
Сначала я беру старый запрос и выгружаю его результат в файл.
А затем то же самое делаю с новым запросом.
А когда результаты обоих запросов у меня лежат в файлах, я делаю выборку из этих обоих файлов. Помещаю их содержимое во временные таблицы, а далее включаем фантазию и матчим таблицы между собой как хотим, выискивая те самые строки, на которых у нас обнаруживается разная сумма или неверное количество.
2. Встречаются мне такие запросы, в которых очень много выборок во временные таблицы, ввиду наличия сложных расчётов и большого количества полей в конечной таблице. Да и сам такие запросы порой вынужден писать.
Когда объем данных вырастает на порядки, такие запросы иногда начинают тормозить.
Чтобы понять, в какой именно части запроса «слабое звено», — запускаем замер. Желательно ограничить в разумных пределах результат выборки, чтобы не ждать по полдня (смотря, конечно, насколько долго выполняется запрос). И получаем в результате время выполнения каждой временной таблицы.
3. Подготовка текста запроса к помещению в модуль.
Случается так, что текст запроса очень большой и содержит в себе двойные кавычки. Такие запросы, как правило, быстро в текст модуля не поместишь, если не пользуешься конструктором запроса (ввиду сложности и невозможности восприятия всей последовательной логики текста в конструкторе), для таких целей и реализована простенькая функция подготовки текста к помещению в модуль.
4. В тех же самых длинных запросах, которые растягиваются на тысячи строк, не всегда можно с легкостью визуально отследить — все ли временные таблицы своевременно уничтожаются.
Для этих целей я также сделал кнопочку, которая выдаст Вам список временных таблиц, которые не были уничтожены. Это сэкономит Ваше время и сократит размеры tempdb на SQL сервере. (Для тех, кому невыгодно из-за производительности использовать менеджер временных таблиц).
интересно, в каком модуле работает конструкция «Выбрать … Из [File]»
(1) vec435, Добрый день, если я правильно понял Ваш вопрос, то все прописано в модуле формы консоли.
Перед непосредственным выполнением запроса, я просто ищу в тексте данную конструкцию, разбираю её на 2 компонента: Параметр, ПутьКФайлу.
Затем подменяю данную конструкцию на параметр, в который далее помещаю считанную из файла таблицу значений. И после уже идет стандартный код выполнения запроса, описанный до моего вмешательства))
p.s. Ссори, в публикации не рассмотрел детально данный нюанс.
Данная строка состоит из двух частей, разделяется строкой: «<+>»
То что стоит до разделителя — это то как будет называться параметр, в который будет помещена таблица значений. И из которого собственно будет производиться выборка.
А то что стоит после разделителя — путь к файлу, который был ранее сохранен из этой же консоли (либо с помощью любой своей обработки). Файл должен содержать таблицу значений в формате 1С.
(2) с файлом идея интересная. А чем не устроила консоль из «Инструментов Разработчика», например?
(3) necropunk, инструменты разработчика мне очень нравятся и я очень уважаю труды создателя 🙂
Но так сложилось исторически, мою гряду запросов я начал сопровождать в старой, стандартной консоли ещё до того как узнал про «ИР».
Качал ИР, немного смотрел — классно там все. Но в силу привычки и уже настроенного sel файла так и не перешёл тогда.
В день когда публиковал этот пост, в очередной раз скачал свежую версию ИР. Хочу ещё раз пощупать. А то уж чувствую пропускаю много приятного мимо))
(4) я сам качал, щупал, никак не мог приноровиться, а потом столкнулся с базой, куда она интегрирована — прелесть просто, теперь без нее — никуда.
Продолжаешь изобретать велосипеды? =)
(6) tormozit, иногда случается, увы 😀
Даже оправдываться не буду))))
Сравнить результаты выполнения запросов проще используя механизм сравнения файлов и сохранения результата в таблицу, или текстовый файл. Правда для этого желательно результаты отсортировать единым образом.