在ms sql中改进数据库查询

时间:2015-11-26 11:14:26

标签: sql-server performance large-data-volumes

什么'快速查询大量数据(在10.000 - 100.000之间,将来会变得更大......可能是1.000.000+)分散在涉及左连接的多个表(20+)之间,功能(总和,最大值,计数等)?

我的解决方案是创建一个包含我需要的所有数据的表,并且只要其中一个表得到更新,就会有触发器更新此表。我知道触发器并不是真正推荐的,但这样我就可以减轻查询的负担。或者每晚做一次大的更新。 我也尝试过观看,但一旦开始涉及左连接和计算,它的速度太慢而且超时。

2 个答案:

答案 0 :(得分:2)

由于你的问题太笼统,这是一般答案......

您现在正在采取的路径是优化单个查询/单个问题。当然,它可能解决你现在遇到的问题,但从长远来看它通常不是很好(更不用说维持这种事情的累积成本)。

要采取的常见方法是创建一个“分析”数据库 - 您要查询所有报告的生产数据库的实时副本。这个分析数据库最终可能是一个完整的DWH,但你可能会从一个简单的实时复制开始(或者每晚复制或者其他什么)并从那里开始工作......

正如我所说,问题/问题太广泛,无法在几个段落中回答,这些只是一些指导原则......

答案 1 :(得分:1)

需要更多细节,但我已经可以建议:

  1. 使用“with(nolock)”,这会略微提高速度。
  2. 参考:Effect of NOLOCK hint in SELECT statements

    1. 使用表格字段的索引来快速获取数据。
    2. 参考:sql query to select millions record very fast