Я запускаю список сложных запросов в базе данных для определенного периода времени и времени (т. Е. 05/01/2012 по 05/31/2012). Затем мне нужно запустить те же запросы с 06/01/2012 по 06/30/2012. затем присоедините результаты к цели отчета.Повторное использование переменной таблицы?
В запросах я использовал несколько переменных таблицы для хранения временных данных. Поскольку база данных велика, размер переменной таблицы также большой. Есть ли способ, которым я могу повторно использовать эти переменные таблицы?
DROP, Truncate не будет работать. Нужно ли удалять все данные из таблицы @table? Если так, будет ли это медленным? Я должен сделать пакетное удаление для @table, поскольку у него много данных?
BTW, я должен поместить все запросы в один файл SP, не может вызывать функцию или другой SP из-за способа разработки системы.
благодаря
=============================
нет петли в запросах. она работает как:
выбрать ..... выберите ..... обновление ..... присоединиться ......
сделать набор запросов на дату 05/01/2012 в 05/31/2012. то для этого необходимо задать тот же набор запросов для 06/01/2012 по 06/30/2012.
В запросах есть много логических внутри, поэтому мы не можем объединить эти 2 в один набор запросов. из-за разработанной системы мы не можем вызывать функцию или SP для запроса. необходимо выполнить первый набор запросов, затем второй набор запросов в последовательности.
проблема в том, что данных слишком много, @table слишком велика. если мы можем повторно использовать @table, это решит проблему.
благодаря
===============================
да, прямо сейчас, одинаковые коды, повторите дважды для двух разных интервалов времени. однако в коде он имеет некоторые логические внутри, разные процессы, основанные на различии между дат-временем. Извините, я не могу опубликовать фактический код. Но процесс подобен SP с различным периодом datetime как параметрами.
Однако я не могу использовать функцию SP/в этом случае, поэтому вам придется дважды скопировать код того же кода. в идеале, понадобится использовать разные @table для каждого повтора кода (прямо сейчас, мне нужно повторить 3 раза), но из-за размера данных @table слишком велика, если я повторяю 3 раза (требуется несколько @table в каждом для выполнения логической части).
Возможно, мне лучше использовать временную таблицу? поэтому я могу отказаться от него, когда вы начнете новый «повтор»?
благодаря
Возможно, вы сможете отобразить код. Повторное использование переменной таблицы подразумевает цикл, который, вероятно, не нужен. И даже с циклом переменная таблицы может не понадобиться. Кажется, на этот лук может быть много слоев. Чем больше пилинга вы сделаете для нас, тем лучше будет ваше конечное решение. –
Я не понимаю логику, которую вы там разместили. 'select ... select ... update ... join' - что это значит? Как вы идете с мая по июнь? Как ваш код знает, как запустить отчеты за эти два месяца? У вас есть два почти одинаковых запроса, жестко закодированных с этими датами? –
Я думаю, что вы пытаетесь микро-оптимизировать здесь. К сожалению, из-за ваших вариантов дизайна запроса это будет похоже на бритье ног яка, чтобы заставить его плавать быстрее. –