对于我需要构建的数据库(InnoDB),我有两个不同的结构,我想知道哪一个在性能方面最好。
我想存储数千种产品。每种产品都可以包含一定程度 - 也可以是0-成分(它们是化学产品)。 A-Z有26种不同的成分。每种成分都有自己的特点。
问题是:我如何才能最好地存储和链接成分和产品(在性能方面)?
表格中的每一行都有26个附加字段:每个成分一个。该字段包含金额(不是ref-key)。每个成分列都有一个索引,可以加快搜索速度。产品和成分之间的联系仅存在于程序逻辑层面。数据库中没有链接表。
有一个包含产品的表格和一个包含这些成分的表格。表Products没有成分的字段,而是有一个链接表将产品链接到成分并定义金额。现在,在数据库级别定义了产品和成分之间的链接。这张桌子可能会变得非常大。
另一种选择B是我为每种成分制作一个链接表,最终得到26个链接表。在搜索时我不确定这是否更快??
答案 0 :(得分:2)
不要使用选项A.这使得添加或修改成分变得困难,并且根据某些事情,会大大增加产品表的大小。
选项B是要走的路。添加或去除成分将是微不足道的,并且对性能没有实际影响。如果您在(product_id, ingredient_id)
上创建链接表的主键,则大小不会太差,性能也会很好。这种方法也是最简洁和最容易管理的。
为每种成分创建一个链接表将是不必要的复杂和低效。