【发布时间】:2016-02-29 11:07:36
【问题描述】:
什么是查询大量数据的快速方法(在 10.000 - 100.000 之间,未来会变得更大......也许 1.000.000+)分布在多个表(20+)中,涉及左连接、函数(总和、最大值、计数等)?
我的解决方案是制作一个包含我需要的所有数据的表,并在其他表之一更新时使用触发器更新此表。我知道触发器并不是真的推荐,但这样我可以减轻查询的负担。或者每晚做一次大更新。 我也尝试过使用视图,但是一旦它开始涉及左连接和计算,它就会太慢并且超时。
【问题讨论】:
-
你确定这是最好的设计吗?以我的经验,100.000 条记录并没有那么大。将所有内容放在一个表中会使数据非规范化,我(通常)不会这样做。
-
它将达到百万大关,所以我也必须考虑这一点。这必须很快,因为一旦我查询了数据,我还需要使用它。因此,这就像导出几条 100.000 条记录,并且添加到过滤器中的每个连接或函数都会使其速度变慢。
-
您能否澄清“在涉及左连接、函数的多个表 (20+) 中分布”?您是否必须运行一个查询来跨所有这些表执行连接?或者您是否有跨多个表的行分区?例如,其中包含历史数据的表格。
标签: sql-server performance large-data-volumes