SQL Server自动分区大型数据库表

我正在处理具有数千万行的数据库表(随着时间的推移可能会达到数亿),我正在考虑实现数据库分区,以便在行数增加时保持性能稳定。这就是我想做的事情: 说我有一张存放动物的桌子。其中一个领域是AnimalType(即Bird / Fish / Cat / Dog)。我希望每个AnimalType都是一个单独的分区,因为99%的查询只涉及一个AnimalType&表中大致有相同数量的AnimalTypes(即1000条鱼,1000只小鸟,1000只狗),这意味着分区应该很好并且均匀分布。但是,有很多动物类型,我不想为每个AnimalType手动创建数百个分区,然后每次输入新的AnimalType时都必须创建一个新的分区。 因此,我想要的是告诉SQL Server基于AnimalType进行分区的一些方法。如果AnimalType已有分区,请使用该分区,否则SQL Server将自动创建新分区。 这听起来很简单,但我似乎找不到办法做到这一点。可能吗? 或者,还有哪些其他方法可以保持表访问速度的快速和快速?我想避免任何只是手动将内容移动到更多表中的内容,例如将旧记录移动到历史样式表中,因为查询可能需要来自完整数据集的数据,因此实际上不会救命。我已经有一些基本的索引有很大帮助。     
已邀请:
分区是存储问题的解决方案,即。根据某些字段值确定文件组数据的位置。就其本身而言,它没有带来真正的性能优势,实际上它实际上会减慢查询的次数,因为需要添加新的分区位置运算符。强制查询仅考虑一个分区的唯一方法是$ PARTITION语法,这不能用于实际应用场景。选择仅查找一个分区的查询仅基于索引范围进行查询,并且可以使用或不使用分区扫描完全相同数量的记录。 分区具有性能优势的唯一时间是管理活动,例如分区切换和从表或批量导入操作切换。 性能优势只能来自适当的索引和精心设计的查询。     

要回复问题请先登录注册