使用 SQL Server Temp 表的最佳做法



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

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

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

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

理想情况下,我想要一个每小时过期一次的会话临时表,这样客户端就可以访问多个后续请求的数据,而不必经常重新创建它。

我有什么选择可以做到这一点?

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

相关内容

  • 没有找到相关文章

最新更新