我想知道,在决定是否应该为sql db创建新表或修改现有表时,我应该考虑什么。我同时使用mysql和sqlite。
-Edit-我一直以为我是否可以将一个列放入一个有意义的表中并且可以被每一行使用然后我会一直修改它。但是在工作中,如果它是一个不同的'发布',我们将它放在另一个表中。
答案 0 :(得分:1)
只要
,您就可以修改现有表格即使1.和2.为真,您也可以创建新表,原因如下:
答案 1 :(得分:0)
不确定我是否正确理解了您的问题,但我总是试图考虑的一件事是对现有数据的影响。
以依赖数据库的应用程序为例......
更新应用程序(包括数据库架构更新)时,务必确保任何现有的正在使用的数据库向后兼容应用程序,或者有迁移和更新现有数据库的方法。< / p>
答案 2 :(得分:0)
一般来说,如果数据与表中的现有数据是一对一的关系,并且如果表行大小已经不是太大,并且表中没有太多记录,那么我通常更改表以接受新列。
但是,假设我想将一个具有默认值的列添加到不存在的表中。将它添加到具有5000万条记录的表中可能不是一个过程如此迅速,并且当我们移动更改时它可能会锁定生产表。在这种情况下,将它放入一个单独的表并将记录添加到它可能会更好。一般情况下,除非我的测试显示添加和填充列将花费不可接受的长时间,否则我不会这样做。我希望尽可能将记录保存在一起。
整体记录大小相同。 SQL服务器对记录中可以包含的字节数有字节限制,它允许您创建一个可能大于该结构的结构,但它不会让您将超过字节限制的内容放入特定记录中。此外,由于存储方式的原因,较宽的表往往更快访问。通常,人们会创建一个具有一对一关系的表(我们称之为结构中的扩展表),用于其他不经常使用的列。如果经常使用两个表中的字段,通常它们仍然会创建两个表但是有一个视图可以选择所需的所有列。
当然,如果数据是一对多关系,则需要一个相关的表而不仅仅是一个新列。
顺便说一句,您应该始终通过脚本和SSMS GUI执行alter table,因为它更有效,更容易转移到prod。