Если у меня большая таблица со столбцом, который имеет довольно ограниченный диапазон значений (например, <100), разумно ли разделить эту таблицу на несколько таблиц с именами, привязанными к этому значению столбца? </p>
Например, таблица, подобная столбцам:
table "TimeStamps": [Id] [DeviceId] [MessageCounter] [SomeData]
, где [DeviceId]
- столбец «ограниченного диапазона», будет разделена на несколько разных таблиц:
table "TimeStamps1": [Id] [MessageCounter] [SomeData]
table "TimeStamps2": [Id] [MessageCounter] [SomeData]
...
table "TimeStampsN": [Id] [MessageCounter] [SomeData]
Проблема, с которой я сталкиваюсьМоя оригинальная таблица состоит в том, что нахождение наибольшего значения MessageCounter для некоторых значений DeviceId выполняется очень долго (см. this post).
Если таблицы будут разделены, то поиск максимального номера столбца долженбыть операцией O (1).
[Edit]
Просто наткнулся на это, подумал, что я обновлю его.При некоторой правильной настройке индексов и запланированных заданий по реорганизации индексов мне удалось добиться высокой производительности с помощью нормализованной формы.Я рекомендую использовать инструмент SSMS для настройки ядра СУБД для каждого узкого запроса, он очень помог (для кого-то, кто не занимается основной работой - проектирование базы данных).