在我们的网络应用程序中,我们在数据库中创建会话表以存储临时数据。因此,将为每个用户创建和销毁临时表。这个网络应用程序我有大约300个用户。因此,对于每个用户,这些表都将被创建和销毁。
我听说由于性能问题,这种设计方式并不好。 我正在使用MS Sql server 2005.有没有办法临时存储结果集而不创建任何表。
请建议我一些解决方案。 感谢。
答案 0 :(得分:2)
或者:
为所有用户使用单个永久数据库表,并使用UserID列过滤
或
只需使用您的网络平台的会话处理功能来存储信息
答案 1 :(得分:1)
听起来好像是在创建和删除永久表。您是否尝试过使用真实临时表(表名以#开头的表)。如果你有一个小的数据集,OR表变量。这些都可以很好地工作。如果你使用真正的临时表,你需要确保你的tempdb大小足以容纳通常的用户数量,增加tempdb会导致延迟。
答案 2 :(得分:0)
我想,GenerateData的解决方案正是您所寻找的。您可以创建测试/样本数据库,并在需要时将其删除。
答案 3 :(得分:0)
根据你实际做的事情(以及你是否可以重构),使用table variables可能更合适一般。
如果问题不仅仅是学术上的问题,那么,如果问题不仅仅是学术上的,那么数据库确实是一个合适的地方,甚至可以尝试保留数据集。或许保持对象的表示形式会更好应用内存中的数据?