应用程序动态创建数据库表作为分区的手段是否合理?动态创建表作为分区的一种方式:好还是坏做法?
例如,假设我有一个大表“widgets”,其中有一个标识每行所有者的“userID”列。如果这个表格变得非常大,那么让应用程序为每个新用户创建一个名为“widgets_ {username}”的新表格会有意义吗?假设应用程序一次只需查询属于单个用户的小部件(即不需要尝试将这些用户小部件表中的任何一个连接在一起)。
这样做会将一张大桌子拆分为更容易管理的块,但这看起来不是一个优雅的解决方案。在我看来,应该在应用程序写入时定义数据库模式,并且任何运行时数据都以行的形式存储,而不是作为附加的表存储。
作为一个更普遍的问题,在运行时修改数据库模式可以吗?
编辑:这个问题大多是假设的;我有一个非常好的感觉,即在运行时创建表没有任何意义。这就是说,我们的应用程序中有一个包含数百万行的表格。 SELECTs表现良好,但删除特定用户拥有的所有行可能需要一段时间。基本上我正在寻找一些可靠的推理,为什么只是为每个用户动态创建一个表格对于我什么时候被问到什么都没有意义。
为什么你认为一个拥有大量小部件 - 用户名表的数据库比一个带有额外列“用户名”的表更好?使用后者,并使用正确的索引。 – Konerak
为什么还要打扰?是SELECT * FROM部件WHERE userID ='Fulano'需要很长时间才能运行? –
“轻松管理”是什么意思?你在谈论查询表格还是存档等任务? –