Несколько миллионов записей - это крошечная база данных для SQL Server. Он может обрабатывать терабайты данных с большим количеством соединений, без пота. Скорее всего, у вас проблема с дизайном или плохо написанные запросы.
Престижность для тестирования производительности, прежде чем начать работу. Это гораздо сложнее исправить после того, как вы работали в течение нескольких месяцев или лет.
То, что вы сделали, вероятно, плохой выбор. Если вы денормализуете, вам нужно настроить триггеры, чтобы обеспечить синхронизацию данных. Ты сделал это? Насколько это увеличило время вставки и обновления?
Мое первое предположение: вы не ставили индексы на внешние ключи.
Другие предположения относительно того, что может быть неправильным, включают в себя чрезмерное использование таких вещей, как:
коррелированные подзапросы
скалярные функции
взгляды вызывающие взгляды
курсоры
Таблицы EAV
недостаточная проходимость
использование выбора *
Плохой дизайн стола также может затруднить хорошую производительность. Например, если ваши таблицы слишком широки, доступ к ним будет медленнее. Если вы часто конвертируете данные в другой тип данных, чтобы использовать их, то вы храните их неправильно, и это всегда будет тормозить систему.
Динамический SQl может быть быстрее хранимого процесса, а может и нет. Там нет одного правильного ответа здесь для производительности. Для внутренней безопасности (вам не нужно устанавливать права на уровне таблицы) и простоты внесения изменений в базу данных, хранимые процедуры лучше.
Вам нужно запустить профилировщик и определить, какие у вас самые медленные запросы. Также посмотрите на все запросы, которые выполняются очень часто. Небольшое изменение может окупиться, когда запрос выполняется тысячи раз в день.
Вы также должны получить несколько книг по настройке производительности. Это поможет вам в этом процессе, поскольку проблемы с производительностью могут быть вызваны многими причинами:
Дизайн базы данных
Дизайн запроса
аппаратные средства
индексирование
и т.д.
Не существует единого быстрого исправления, и случайная денормализация может доставить вам больше хлопот, чем отсутствие поддержки целостности данных.