У нас есть база данных SQL Server 4-5 ТБ.Самая большая таблица размером около 800 ГБ содержит 100 миллионов строк.4-5 других сопоставимых таблиц составляют 1 / 3-2 / 3 этого размера.Мы прошли процесс создания новых индексов для оптимизации производительности.Несмотря на то, что производительность, безусловно, улучшилась, мы увидели, что недавно вставленные данные были самыми медленными для запроса.
Это приложение для финансовой отчетности с инструментом BI, работающим поверх базы данных.Данные загружаются в течение ночи и продолжаются поздним утром, хотя большая часть данных загружается к 7 утра.Пользователи начинают запрашивать данные около 8 часов утра с помощью инструмента BI и больше всего беспокоятся о последних (ежедневных) данных.
Я хотел бы знать, приводит ли добавленные данные к тому, что индексы выходят из строя.Можем ли мы что-нибудь сделать, чтобы мы получили лучшую производительность на вновь введенных данных, чем на старых.Я надеюсь, что хорошо объяснил проблему здесь.Дайте мне знать в случае любой недостающей информации.Спасибо
Редактировать 1
Позвольте мне немного описать архитектуру.У меня есть базовая таблица (назовем ее Base) с датой, id в качестве кластерного индекса.В нем около 50 столбцов. Затем у нас есть 5 производных таблиц (Derived1, Derived2, ...) в соответствии с различными типами метрик, которые также имеют Date, Id в качестве кластеризованного индекса и ограничение внешнего ключа для базовой таблицы.
Таблицы Derived1 и Derived2 имеют 350+ столбцов.Производные 3,4,5 имеют около 100-200 столбцов.Существует одно большое представление, созданное для объединения всех таблиц данных из-за ограничений инструмента BI.Дата, ID - это объединяющие столбцы для всех таблиц, соединяющихся для формирования представления (поэтому я создал кластерный индекс для этих столбцов).Основное беспокойство связано с производительностью инструмента BI.Инструмент BI всегда использует представление и обычно отправляет похожие запросы на сервер.
Есть и другие индексы для других столбцов фильтрации.Главный вопрос остается - как предотвратить ухудшение производительности.Кроме того, я хотел бы знать,
- Если NCI на дату, ID на всех таблицах будет лучше ставить в дополнение к кластерному индексу на дату, ID.
- Имеет ли смысл иметь 150 столбцов, включенных в NCI для производных таблиц?