Mysql 1:1关系的优势是什么

Mysql 1:1关系的优势是什么,mysql,database,Mysql,Database,我有一个数据库(mysql),在一个进行中的表中有大约80列。我正在考虑将这些信息分离到其他表中,并保持1:1的关系。但这可能会影响开发时间,创建更多的对象,等等 使用具有1:1关系的多个表而不是使用同一个表中的所有内容有什么好处?将一个大表拆分为具有1:1关系的两个不同表基本上可以帮助您更好地查看数据库及其相关方案。当您构建关系数据库时,可读性是这样做的最大好处。但是,是的,它会使您的查询更加复杂,并且当将一个大表拆分为两个具有1:1关系的不同表时,可能会失去一些效率,这基本上有助于更好地查看

我有一个数据库(mysql),在一个进行中的表中有大约80列。我正在考虑将这些信息分离到其他表中,并保持1:1的关系。但这可能会影响开发时间,创建更多的对象,等等


使用具有1:1关系的多个表而不是使用同一个表中的所有内容有什么好处?

将一个大表拆分为具有1:1关系的两个不同表基本上可以帮助您更好地查看数据库及其相关方案。当您构建关系数据库时,可读性是这样做的最大好处。但是,是的,它会使您的查询更加复杂,并且当将一个大表拆分为两个具有1:1关系的不同表时,可能会失去一些效率,这基本上有助于更好地查看数据库及其相关方案。当您构建关系数据库时,可读性是这样做的最大好处。但是,是的,这会使查询更加复杂,而且当一个表中的列超过80列时,可能会失去一些效率

,这听起来不像是正确地将其标准化为3NF或更高。但是无论如何,假设您确实或者有充分的理由不进一步规范化,那么将其拆分为多个表只有两个理由

理由1():

对于具有多个列的表,为了减少不使用BULB列的查询的内存需求,请考虑将BULB列拆分为单独的表,并在需要时将其引用到联接查询。

理由2():

您有很多列,其中的值大部分时间为NULL,但您希望对它们使用索引来加速某些查询

如果可能,将列声明为不为NULL。通过更好地使用索引和消除测试每个值是否为空的开销,它使SQL操作更快。还可以节省一些存储空间,每列一位。如果表中确实需要空值,请使用它们。只需避免在每一列中都允许空值的默认设置


也就是说,这两个原因很少出现,只适用于非常大的表


您的模式的可读性(如Dimitri所建议的)不应该是您关心的问题之一。无论如何,我不明白,将一个表拆分为多个表是如何改进这一点的。事实上,我认为这会使情况恶化。(编辑:在评论中发现,Dimitri的意思是规范化…

当一个表中有80多列时,听起来您并没有正确地将其规范化为3NF或更高。但是无论如何,假设您确实或者有充分的理由不进一步规范化,那么将其拆分为多个表只有两个理由

理由1():

对于具有多个列的表,为了减少不使用BULB列的查询的内存需求,请考虑将BULB列拆分为单独的表,并在需要时将其引用到联接查询。

理由2():

您有很多列,其中的值大部分时间为NULL,但您希望对它们使用索引来加速某些查询

如果可能,将列声明为不为NULL。通过更好地使用索引和消除测试每个值是否为空的开销,它使SQL操作更快。还可以节省一些存储空间,每列一位。如果表中确实需要空值,请使用它们。只需避免在每一列中都允许空值的默认设置


也就是说,这两个原因很少出现,只适用于非常大的表


您的模式的可读性(如Dimitri所建议的)不应该是您关心的问题之一。无论如何,我不明白,将一个表拆分为多个表是如何改进这一点的。事实上,我认为这会使情况恶化。(编辑:在评论中,Dimitri的意思是规范化…

你听说过数据库规范化吗?如果您有大量与给定实体相关联的数据,但很少需要这些数据,那么只需问一下……1:1关系非常有用。RDBMS中的大多数关系都是1:n。@fancyPants是的,我听说了。但我想更好地了解我是否会凭借性能或其他优势获胜。是的,在一些地方,我不需要列出所有数据。当然,我很少会列出所有的事情。那么,建立1:1的关系是否更好呢;只有当可以证明修改后的结构下的查询将执行得更快时,才需要此步骤。简单地说,这可能在你进入数百万行之前不会发生。你听说过数据库规范化吗?如果您有大量与给定实体相关联的数据,但很少需要这些数据,那么只需问一下……1:1关系非常有用。RDBMS中的大多数关系都是1:n。@fancyPants是的,我听说了。但我想更好地了解我是否会凭借性能或其他优势获胜。是的,在一些地方,我不需要列出所有数据。当然,我很少会列出所有的事情。那么,建立1:1的关系是否更好呢;只有当可以证明修改后的结构下的查询将执行得更快时,才需要此步骤。简单地说,在你进入数百万行之前,这可能不会发生。性能呢?在分离表格的过程中,我会有所收获吗?正如我所说,你可能会失去一些,但在某些情况下可能会获得一些(取决于你大部分时间获得的数据,如果你总是需要所有东西,你会失去性能,如果不是,你可能会赢得一些)这样做的最大好处仍然是数据库模式的可读性。我看到您的评论总是非常有建设性的。什么有什么不对