繁体   English   中英

使用SQL Server临时表的最佳实践

[英]Best practice for using SQL Server Temp Tables

我有一个仪表板Web应用程序,涉及用户登录以查询大量数据(MS SQL Server 2016)和查看结果图表。 数据也经常更改(例如每小时更改一次)。 性能尤为重要。

为了提高性能,我发现可以一次创建一个临时表来处理大量的处理,然后多次重新查询该表(例如,按不同的字段分组)以生成不同的图表。 当用户首次登录时,我可以使用此方法一次性快速为用户预先计算很多图表数据。 这比每次都执行整个查询要高效得多(即对20个图表中的每个图表分别执行“临时表+分组依据”)。

但是,一旦用户登录,便可以执行其他操作,以重新使用该临时表数据。 理想情况下,我不想在每个后续请求中都重新创建临时表,因此我想在客户端登录的整个生命周期内重新使用它。

我认为我不能使用全局表,因为每个用户都需要一个单独的表。 如果用户的会话在客户端上超时,SQL Server也将不知道何时删除表,这可能导致大量旧临时表和大量数据的堆积。

理想情况下,我想要一个会话临时表,该表会在每个小时内到期,这样客户端可以访问多个后续请求的数据,而不必那么频繁地重新创建它。

我有什么选择呢?

我建议使用临时表快速检索任何数据的唯一时间是最终数据。 意味着没有人会改变它。 itu告将是一个很好的清单。 如果这样做,则每个人最终可能会在其图表中得到不同的数据。 人员A查询并获取临时数据表并创建图表。 人员B查询并获取所有新数据和修改后的数据的临时表,并创建图表。 人员A再次查询,并从他们的第一个查询中获取原始数据,但从未看到人员B看到的内容。 我不建议这种方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM