我有一个仪表板 Web 应用程序,其中涉及用户登录以查询大量数据(MS SQL Server 2016)并查看结果图表。数据也经常变化(比如每小时)。性能尤为重要。
为了提高性能,我发现我可以创建一个临时表,它处理大量的处理,然后多次重新查询该表(例如,按不同字段分组)以生成不同的图表。当用户首次登录时,我可以使用此方法一次性快速为用户预计算大量图表数据。这比每次都执行整个查询要有效得多(即,为 20 个图表中的每一个单独执行“临时表 + 分组”)。
但是,一旦用户登录,他可以采取其他操作来重新使用该临时表数据。理想情况下,我不想在每个后续请求上重新创建临时表,所以我想在客户端登录的整个生命周期内重新使用它。
我认为我不能使用全局表,因为我需要为每个用户单独使用一个表。此外,如果用户的会话在客户端超时,SQL Server 也不知道何时删除表,这可能导致大量旧临时表和大量数据的堆积。
理想情况下,我想要一个会话临时表,该表每小时都会过期,因此客户端可以访问多个后续请求的数据,而不必经常重新创建它。
我有什么选择这样做?