我有一个学区数据库(约15,000人和增长)以及退休计划/福利可用于每个员工。该数据是相当不错标准化:反规范化的建议
- A区记录与
- A区记录与相关0或ñ退休计划选项(其中ñ < 10铺开3连接表)关联0或n好处(其中n从1个连接的表格更接近于40)
- 区域还与其他关联数量相似的其他事物相关联。
现在客户想报告。而且他们希望以非常动态的方式进行报告(想想一下iTunes智能播放列表,您可以在任何地区,计划或优惠的任何地方添加/删除规则)。我需要让他们查询某个地区的任何财产,其退休计划或其利益,并返回的一切。为了让事情变得简单(现在)并避免重复的数据,我设置了几个视图(嘘,我知道),它允许我以任何1区记录的方式访问数据与all_retirement_plans
视图和all_benefits_plans
视图具有一对一的关系,并与all_benefits_plans
视图具有一对一的关系。这给了我一套干净的连接,导致了一个统一的结果集,但显然带有它自己的问题,我打算早点击,而不是晚点...
也就是说,它会得到可笑地随着更多数据的添加而变慢。
我在寻找有关反规范化的建议。我曾想过一个报告表,它可以完成视图的工作,但可以编入索引。我也想过把这整个区域数据转储到MongoDB(或类似的)。我相信还有其他的选择,但我会玩试验和错误游戏,所以我希望这里的某个人能够以一种合理的解决方案让我参与进来。
底线是我需要能够存储〜15,000(和增长)的区域记录以及大量额外的元数据,然后以非常细化的级别报告这些数据。除了我自己的想法带给我的任何地方之外,任何人有任何想法或建议吗我试图提前知道我所知道的问题。
*”我已经设置了几个视图(嘘,我知道)......“*视图是SQL数据库管理系统的基本特征。当你必须紧挨着使用* views *和* shhh *时,你应该考虑切换到不同的dbms。 – 2013-02-20 19:29:49
我在那里有点愚蠢,但事实是,对于这种特殊需求,意见可能不是合适的平台。考虑到数据的大小(特别是一旦非规范化的列数),这些观点就像我预期的那样缓慢。我不知道有什么方法来优化它们,但我很想错。 – 2013-02-20 19:41:44
获得更好性能的一种方法是切换到具有更好查询优化器的dbms。 – 2013-02-20 20:01:48