据我所知,事实表中没有主键,而放置代理键不知何故是在浪费空间。因此,外键组合是事实表的主键。但我可能无法做到这一点,因为唯一键可能会在事实表中重复,例如,同一个人在同一天,在同一家餐厅付了两次钱。在这个cas中,主键不再是唯一的。。。有什么办法解决这个问题吗è我,不添加代理密钥?提前谢谢!
xmakbtuz1#
innodb,如果你不提供pk,会给你提供一个。但是它是6个字节并且是隐藏的。与4字节的代理项相比 INT ,这个更大!检查数据;可能有一个“自然”的pk是一列或列的组合。一般来说,对于dw,事实表上唯一的索引就是pk。然后我使用“摘要表”来处理大部分访问。它们更小更快。在极端情况下,我将清除旧的事实行(通过 DROP PARTITION )但要永远记住总结表。这样可以控制磁盘空间,同时几乎不会丢失任何有用的数据。底线:为每个表提供一个显式的pk。
INT
DROP PARTITION
gywdnpxw2#
如果您正在构建这样一个表,强烈建议使用主键或唯一键组合,但如果您避免添加pk,则可能需要添加唯一的事务号,这样您就可以将客户号和事务号组合为键组合。
2条答案
按热度按时间xmakbtuz1#
innodb,如果你不提供pk,会给你提供一个。但是它是6个字节并且是隐藏的。与4字节的代理项相比
INT
,这个更大!检查数据;可能有一个“自然”的pk是一列或列的组合。
一般来说,对于dw,事实表上唯一的索引就是pk。然后我使用“摘要表”来处理大部分访问。它们更小更快。在极端情况下,我将清除旧的事实行(通过
DROP PARTITION
)但要永远记住总结表。这样可以控制磁盘空间,同时几乎不会丢失任何有用的数据。底线:为每个表提供一个显式的pk。
gywdnpxw2#
如果您正在构建这样一个表,强烈建议使用主键或唯一键组合,但如果您避免添加pk,则可能需要添加唯一的事务号,这样您就可以将客户号和事务号组合为键组合。