什么'快速查询大量数据(在10.000 - 100.000之间,将来会变得更大......可能是1.000.000+)分散在涉及左连接的多个表(20+)之间,功能(总和,最大值,计数等)?
我的解决方案是创建一个包含我需要的所有数据的表,并且只要其中一个表得到更新,就会有触发器更新此表。我知道触发器并不是真正推荐的,但这样我就可以减轻查询的负担。或者每晚做一次大的更新。 我也尝试过观看,但一旦开始涉及左连接和计算,它的速度太慢而且超时。
答案 0 :(得分:2)
由于你的问题太笼统,这是一般答案......
您现在正在采取的路径是优化单个查询/单个问题。当然,它可能解决你现在遇到的问题,但从长远来看它通常不是很好(更不用说维持这种事情的累积成本)。
要采取的常见方法是创建一个“分析”数据库 - 您要查询所有报告的生产数据库的实时副本。这个分析数据库最终可能是一个完整的DWH,但你可能会从一个简单的实时复制开始(或者每晚复制或者其他什么)并从那里开始工作......
正如我所说,问题/问题太广泛,无法在几个段落中回答,这些只是一些指导原则......
答案 1 :(得分:1)
需要更多细节,但我已经可以建议:
参考:Effect of NOLOCK hint in SELECT statements