2012-04-17 2 views
1

Мы собираемся начать новый процесс. Он будет включать более пятидесяти столов с общим количеством более 2 миллионов строк. Процесс будет зацикливаться на поле для/для каждого окна. Внутри таблицы будут проходить разные проспекты. Базовые обновления (наиболее часто называемым будет удаление, ищущее дубликаты). В итоге мы получим новую таблицу с полным содержимым всех этих 50 таблиц со всеми сделанными обновлениями.SQL for Loop Tunning

Так что мой вопрос: лучше ли с точки зрения скорости искать дубликаты в таблицах во время каждого цикла. Или лучше сделать полное удаление в конце процесса, проверяя полный результат? Объем работы будет более или менее одинаковым.

Большое спасибо.

EDIT.

Дополнительная информация.

Петля является необходимой. Эти 50 таблиц расположены на двух разных серверах. Oracle и Access. Цикл должен заполнить их на SQL-сервере, локальном. На каждой популяции (цикл) я делаю некоторые обновления и работаю над таблицами, чтобы они были готовы.

Вопрос в том, работает ли работа над таблицами быстрее, если она попадает в цикл или за его пределы.

Спасибо, надеюсь, что он станет понятнее.

+0

Лучше делать вещи в наборах без петлирования вообще. – HLGEM

+0

@HLGEM - Всегда? Я * * обнаружил, что он * может * * иногда * быть хорошей идеей разбить большую запись на более мелкие записи, чтобы сохранить накладные расходы журнала транзакций и т. Д. – MatBailie

+0

@Dems Не всегда, но практически всегда, когда вы зацикливаете одну запись за раз , Если вы зацикливаете турусы, что часто является хорошей идеей. – HLGEM

ответ

1

звучит как один оператор

также, почему денормализации преждевременно?

+0

Я пробовал небольшую копию того, что будет после завершения полного процесса. Просто используйте 2 таблицы. 1-е удаление внутри цикла. Это заняло 3,5 секунды. 2-й после цикла, и это заняло 4,2 секунды. Я не знаю, было ли это случайным временем из-за случайных таблиц, которые я выбрал, или если это какой-то показатель. После того, как будут задействованы 50 таблиц, это может занять несколько минут, поэтому Id хотел бы начать делать денормализацию сразу, если возможно, конечно, –

+0

мне кажется, что вы не должны писать цикл ... это все должно быть сделано sql заявление. возможно, отредактируйте вопрос, чтобы показать некоторые примеры таблиц, данных и желаемых результатов - тогда вы можете получить хороший SQL-запрос для сравнения. – Randy