我想知道以下使用数据库的方式是否存在固有缺陷...我想创建一个带有 Web 前端的报告系统,通过该系统我可以在数据库中查询相关数据,然后发送结果使用“SELECT INTO”查询新数据表。然后程序将从该表中进行查询以显示报告的“页面”。这样做的优点是,如果有大量数据,可以将其作为页面一次呈现给用户一点点。当用户请求报表的不同页面时,可以反复访问相同的数据表。当网络会话结束时,可以删除表。
我准备围绕一些问题进行编程,例如跟踪表并确保它们在需要时被删除。
我有一个模糊的担忧,在很长一段时间内,由于随着时间的推移创建和删除了如此多的表,数据库本身可能会出现某种形式的维护问题。即使日复一日,假设可能有 1000 个这样的表被创建和删除。
有人认为有什么值得担心的吗?
感谢您的任何建议/疑虑。
首先:对@Paul Sasik 的回答+1。
现在,回答您的问题(如果您仍然想采用您的方法)。如果您使用 VARBINARY(MAX) 列(来自 MSDN),可能会引起关注
如果删除包含具有 FILESTREAM 属性的 VARBINARY(MAX) 列的表,则不会删除文件系统中存储的任何数据。
如果您确实决定采用您的方法,我将使用全局临时表。当没有更多连接使用它们时,它们应该被自动删除,但您仍然可以显式删除它们。在您的查询中,您可以检查它们是否存在,如果它们不存在(不再存在),则创建它们。
IF OBJECT_ID('mydb..##temp') IS NULL
-- create temp table and perform your query
Run Code Online (Sandbox Code Playgroud)
这样,您就拥有了大部分逻辑来执行查询并一起管理临时表,这应该使其更易于维护。另外,它们是为创建和删除而构建的,因此可以放心地认为 SQL Server 不会因为创建和删除大量它们而受到任何影响。