我目前正在进行优化。
我倾向于使用多个表,所以我没有空列。
我的问题是,空列有什么大不了的吗?我不是在谈论空间。我指的是索引速度、数据检索等...
我打赌的例子是当我有一个简单的客户表时,有些列并不总是被填充。像电子邮件、dob、ssn 或 pic。我会说大多数时候他们都没有填写。
这让我创建了一个新表来存放辅助数据。 但是,如果我将这些列与其余客户信息放在同一个表中,真的会有所不同吗?
如果我这样做,那么会有很多记录的空列。这让我想知道当记录数很大时这对性能的影响有多大。
最佳答案
如果您正在进行优化,我的建议是放弃它 :-)
优化是应对性能问题应该做的事情,而不是心血来潮。如果没有性能问题,所有的优化都是白费力气。
在设计得当的模式中,空字段很少会对数据检索产生很大影响,因为大多数查询应该尽可能仅使用索引来决定要获取哪些行。发现行后,您就可以转到表中获取实际数据。
并且索引速度不会因为该列存储在另一个表中而改变。如果它需要被索引,那么它就需要被索引。
我希望我的模式尽可能简单(同时仍然主要遵循 3NF)以避免不必要的连接。
关于mysql空列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3613452/