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