假设我有一个简单的产品表: ID、产品代码、价格、描述等
我有 10,000 个产品...但其中 100 个需要声音样本(例如,它们是木琴)。 我想在数据库中存储产品是否有声音样本。
因此,最好将产品表存储为“has_sound” bool 值(真或假)列,还是存储为仅列出所有带有声音的产品 ID 的单独单列表?
存储在产品表中意味着绝大多数只会有“has_sound = false”,这似乎有点浪费。 但仅存储“有声音的产品”列表对我来说似乎也有点“错误”。
非常感谢:)
最佳答案
您有 10,000 行。
即使您选择低效的 4 字节字段大小,您也会通过向产品表添加字段来查看磁盘上大约 40k 的所有内容。相比之下,具有 (int, tinyint) 字段的空 innodb 表在磁盘上的大小约为 100k(加上用于保存表元数据的额外 RAM 开销)。用 100 条记录填充该表没有什么区别,因为所有内容都适合一个分配页。
这些开销都远不足以成为性能考虑因素。
为下一个开发人员做一些让代码最清晰、最简单且最易于维护的事情(在本例中是在产品表上存储一个额外的字段)。
关于mysql - SQL 数据库设计 - 小比例的唯一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38716078/