【问题标题】:Sql performance more columns or more tables for reportingsql性能多列或多表用于报表
【发布时间】:2013-08-31 18:26:01
【问题描述】:

我有一个 sql 数据库,它是作为访问应用程序传递给我的。从那时起,它发展了很多。之前的开发人员在表上存储了额外的列,而不是拆分表,我们开始报告这些数据(超过 100 万行),性能开始拖累一些查询。

一个表是公司的,包含名称、参考、地址详细信息、财务详细信息、保险等。

我认为我们应该将表格拆分为tblcompanytbladdresstblfinance 等。因为我们的报告允许用户报告他们想要的任何字段。如果用户想要报告地址详细信息,我认为内部加入tbladdress 会更好,财务、保险等也是如此。此外,有些公司可能没有任何财务详细信息,那么有很多空字段有什么意义?

不仅是这个表,其他表也加入到这个表中,其他表也采用相同的格式。就以这张表为例

所以我的问题是它会提高性能吗?我认为明智的设计是要做的事情,但希望得到每个人的提示、技巧和意见。

【问题讨论】:

  • 欢迎来到 Stack Overflow。请注意,询问“提示、技巧和意见”的问题可能会被关闭:该站点适用于可能有明确答案的特定编程问题。有关详细信息,请参阅stackoverflow.com/questions/how-to-ask

标签: sql-server performance multiple-columns


【解决方案1】:

不确定您要改进什么性能。当然,规范化可能会改进它以收集和维护数据。但非规范化往往会改善报告。所以诀窍是拥有两个数据库,一个用于每个需求,并通过挖掘操作数据库来填充报告。一切都取决于数据库上的负载以及如果您不想承担设置报告数据库的成本,您想在哪里受到影响。

您只能说,报告会减慢运营交易速度,反之亦然。

如果您希望在这两个要求下都获得最佳性能,那么两个数据库是可行的方法,或者您妥协......

【讨论】:

  • 我想提高报告的性能。我们现在正在执行的许多查询似乎需要一段时间才能执行。保存数据的性能不如报告数据重要。我们实际上有 200 多个此数据库设置的副本(每个客户 1 个),因此不确定是否可以选择单独的报告数据库
  • 没有必要猜测这个,这是我能做的。查找最流行的最慢报表查询。在完全填充的测试数据库中运行它几次以获得性能数据。如果它在没有其他负载的情况下很慢,请解释一下并优化它。如果它很快,那么您就有争用问题,您需要查看正在使用哪些锁,并且您可以安全地使用它们。冲洗并重复。没有人可以给你一个具体的答案。
  • @user2736022,请阅读 Kimball 的 The Data Warehouse Toolkit: The Definitive Guide to Dimensional Modeling。即使您不能/不会实现维度数据模型,前几章也可能会让您很好地了解您需要什么。正如 Tony 暗示的那样,一对一的查询优化可能不够有效。
猜你喜欢
  • 2010-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多