在 ms sql 中改进数据库查询

improve database querying in ms sql

查询大量数据(在 10.000 - 100.000 之间,将来会变得更大......可能 1.000.000+)分布在多个 tables (20+) 中的快速方法是什么涉及左连接、函数(求和、最大值、计数等)?

我的解决方案是制作一个 table,其中包含我需要的所有数据,并具有触发器,每当其他 table 之一更新时更新此 table。我知道并不真正推荐触发器,但这样我就减轻了查询的负担。或者每晚做一个大的更新。 我也尝试过视图,但是一旦它开始涉及左连接和计算,它就太慢了而且会超时。

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

  1. 使用"with(nolock)",这会稍微提高速度。

参考:Effect of NOLOCK hint in SELECT statements

  1. 为您的 table 字段使用索引以快速获取数据。

参考:sql query to select millions record very fast

由于您的问题过于笼统,这里有一个笼统的答案...

您现在采取的方法是优化单个 query/single 问题。当然,它 可能 解决你现在遇到的问题,但从长远来看它通常不是很好 运行 (更不用说维护这种东西的累积成本) .

通常采用的方法是创建一个 'analytics' 数据库 - 您要为所有报告查询的生产数据库的实时副本。这个分析数据库最终甚至可以成为一个完整的 DWH,但你可能会从一个简单的实时复制(或每晚复制或其他)开始,然后从那里开始工作......

正如我所说,question/problem 过于宽泛,无法用几段来回答,这些只是一些指南...