Подскажите, пожалуйста, какие индексы лучше сделать на таблицу T, в которой есть поле date (дата, по ней таблица секционирована), поле id (автоинкремент, по нему идёт связка с другими таблицами) и другие несущественные поля. Почти все запросы такого вида: select ... from T inner join T1 on T.id = T1.id where T.date between '2021-08-01' and '2021-08-31'. В кластерном индексе обязательно должно быть поле с датой, раз по нему секционирована таблица. А вот с полем id не понятно, что делать. Тоже добавить в кластерный индекс или лучше создать первичный ключ (некластерный)? Или оба варианта сразу?)
За месяц сколько записей? И Сколько всего?
Сейчас индексы такие: кластерный уникальный по date + id; primary key nonclustered id. Но мне не нравится производительность( За месяц 12 млн строк, всего в таблице 380 млн строк
Предлагаю создавать на тесте разные и смотреть на планы и статистику. Но в теории индексы должны быть максимально узкие и участвовать в фильтрации. Если ничего не путаю 🤪
Обсуждают сегодня