Вы оставили первое место, которое я бы начал искать: метод, используемый для импорта данных.
Если приложение вставляет отдельные строки, есть ли причина для этого? Это использует DTS или BULK INSERT или BCP? Это загрузка в промежуточный стол или таблицу с триггерами? Он загружается партиями или пытается загрузить и зафиксировать весь пакет? Есть ли обширное преобразование или преобразование типов данных строк на их пути? Существует ли обширное преобразование данных в другую схему или модель?
Я не буду беспокоиться о 1 и 2, пока не выясню, являются ли используемые методы ETL разумными, и если они импортируют данные в существующую схему, тогда у вас не будет большого пространства, чтобы что-либо менять 3. Что касается импорта и 4, я предпочитаю не делать много алгоритмов для данных во время загрузки.
Для достижения наилучшей производительности в самых общих случаях загружайте в плоскую промежуточную таблицу с хорошим надежным преобразованием базовых типов и исключениями, сделанными в это время (с использованием служб SSIS или DTS). Для очень больших данных (скажем, многомиллионных ежедневных загрузок) я загружаю 100 000 или 1 000 000 пакетов записей (это легко устанавливается в BCP или SSIS). Любые производные столбцы создаются либо во время загрузки (SSIS или DTS), либо сразу после UPDATE. Запускайте исключения, проверяйте данные и создавайте ограничения. Затем обработайте данные в окончательной схеме как часть одной или нескольких транзакций - ОБНОВЛЕНИЯ, ВСТАВКИ, УДАЛЕНИЯ, ГРУППЫ BY для измерений или объектов или чего-либо еще.
Очевидно, есть исключения из этого, и это во многом зависит от входных данных и модели. Например, с EBCDIC-упакованными данными во входах нет такого понятия, как хорошее надежное базовое преобразование типов на этапе загрузки, поэтому нагрузка будет более сложной и медленной, поскольку данные должны обрабатываться более значительно.
Используя этот общий подход, мы позволяем SQL делать то, для чего он хорош, и позволяем клиентским приложениям (или службам SSIS) делать то, для чего они хороши.