我的系统涉及众多相关表格。考虑标准类别/产品/订单/客户/订购项目。有些表是自引用的(如Categories)。没有一个表特别大(大约100k行,估计规模为大约100万行)。我需要考虑这些数据有很多维度,但必须以近乎实时的方式查询。我也不知道特定用户感兴趣的维度 - 它可以是多个表中的一个或多个标准。事情可以从
目前我们有一个非常长的SP,它使用“级联数据”方法 - 我们逐个表地进行,使用为该表指定的任何条件将所有内容过滤到临时表中。对于下一个表,我们将当前临时表连接到我们正在使用的任何表,并将新的过滤器集应用到新的临时表中。它可以工作,但可管理性和性能很慢。我需要更好的东西。
我需要一种解决这个问题的新方法。显然需要OLAP,可能使用星型模式。这是否实时工作?可以配置为实时工作吗?我应该使用索引视图来创建一组非规范化表吗?我应该完全卸载数据库外的吗?
仅供参考我们正在使用Sql Server。
答案 0 :(得分:2)
正如您所说,这对OLAP来说非常完美。 使用Sql Server 2005和2008,您可以设置几乎实时的解决方案。你应该:
这不是一项微不足道的工作,您需要企业版的Sql Server才能使用主动缓存。你还需要一些前端工具(可能是excel会这样做)来消耗多维数据集。
答案 1 :(得分:0)
最好在代码中构建一个动态查询,其中包含您需要的所有连接,并根据每个请求进行自定义。 (当然,为安全性进行了适当的参数化)。
您将使用现在的大部分相同的级联逻辑,但是将其移动到代码而不是数据库。然后,您只需提交所需的确切查询。
使用所有临时表可以获得性能,并且在运行几个查询后可能会获得一些缓存优势。
答案 2 :(得分:0)
你的困境听起来像是“通过每次需要时执行复杂的处理来获得相同的结果是否更好,或者我应该只针对每个新的数据执行一次?”。