Я имею дело с таблицами базы данных с десятками миллионов строк (с потенциалом перерасти в сотни миллионов со временем) и пытаюсь реализовать разбиение базы данных, чтобы попытаться сохранить стабильность производительности при увеличении числа строк. Вот что я хотел бы сделать:
Скажем, у меня есть стол, в котором хранятся животные. Одним из полей является AnimalType (то есть Bird / Fish / Cat / Dog). Мне бы хотелось, чтобы каждый AnimalType был отдельным разделом, потому что 99% запросов относятся только к одному AnimalType, и в таблице примерно одинаковое количество AnimalTypes (т.е. 1000 рыб, 1000 птиц, 1000 собак), так что это означает, что перегородки должны быть красивыми и равномерно распределенными. Тем не менее, существует много типов животных, и я не хочу вручную создавать сотни разделов для каждого AnimalType, а затем каждый раз, когда вводится новый AnimalType, приходится создавать новый раздел .
Поэтому мне бы хотелось, чтобы SQL Server разделил на основе AnimalType. Если для AnimalType уже есть раздел, используйте этот раздел, иначе SQL Server автоматически создаст новый раздел.
Звучит достаточно просто, но я не могу найти способ сделать это. Возможно ли это?
В качестве альтернативы , каковы другие способы поддержания скорости доступа к таблицам? Я хотел бы избежать всего, что просто перемещает вещи вручную в большее количество таблиц, например, перемещает старые записи в таблицу стилей истории, поскольку существует вероятность того, что запросы будут нуждаться в данных из полного набора данных, и, следовательно, на самом деле это не будет Помогите. У меня уже есть некоторые основные индексы, которые помогают значительно.