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

时间:2018-01-10 19:06:51

标签: sql sql-server temp-tables global-temp-tables

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

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

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

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

理想情况下,我希望会话临时表每小时都​​会过期,因此客户端可以访问多个后续请求的数据,而且不必经常重新创建。

我有什么选择呢?

1 个答案:

答案 0 :(得分:0)

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