我正在处理具有数千万行的数据库表(随着时间的推移可能会达到数亿行),并且正在考虑实施数据库分区以尝试在行数增加时保持性能稳定。这就是我想做的:
假设我有一张存放动物的桌子。字段之一是AnimalType(即Bird/Fish/Cat/Dog)。我希望每个 AnimalType 都是一个单独的分区,因为 99% 的查询只与一个 AnimalType 相关,并且表中的 AnimalType 数量大致相等(即 1000 条鱼、1000 只鸟、1000 条狗),所以这意味着分区应该很好并且均匀分布。但是,动物类型很多,我不想去手动为每个AnimalType创建数百个分区,然后每次输入一个新的AnimalType都必须创建一个新分区。
因此,我想要的是某种方式告诉 SQL Server 基于 AnimalType 进行分区。如果 AnimalType 已经有一个分区,请使用该分区,否则 SQL Server 将自动创建一个新分区。
这听起来很简单,但我似乎无法找到一种方法来做到这一点。可能吗?
或者,还有哪些其他方法可以保持表访问速度又快又快?我想避免任何只是手动将内容移动到更多表中的事情,例如将旧记录移动到历史样式表中,因为查询可能需要来自完整数据集的数据,因此这实际上不会帮助。我已经有一些基本的索引,它们有很大帮助。