MySql InnoDB&表现:什么是最好的结构?

时间:2013-04-29 07:22:28

标签: mysql database performance relational-database database-performance

对于我需要构建的数据库(InnoDB),我有两个不同的结构,我想知道哪一个在性能方面最好。

我想存储数千种产品。每种产品都可以包含一定程度 - 也可以是0-成分(它们是化学产品)。 A-Z有26种不同的成分。每种成分都有自己的特点。

问题是:我如何才能最好地存储和链接成分和产品(在性能方面)?

选项A

表格中的每一行都有26个附加字段:每个成分一个。该字段包含金额(不是ref-key)。每个成分列都有一个索引,可以加快搜索速度。产品和成分之间的联系仅存在于程序逻辑层面。数据库中没有链接表。

选项B

有一个包含产品的表格和一个包含这些成分的表格。表Products没有成分的字段,而是有一个链接表将产品链接到成分并定义金额。现在,在数据库级别定义了产品和成分之间的链接。这张桌子可能会变得非常大。

另一种选择B是我为每种成分制作一个链接表,最终得到26个链接表。在搜索时我不确定这是否更快??

1 个答案:

答案 0 :(得分:2)

不要使用选项A.这使得添加或修改成分变得困难,并且根据某些事情,会大大增加产品表的大小。

选项B是要走的路。添加或去除成分将是微不足道的,并且对性能没有实际影响。如果您在(product_id, ingredient_id)上创建链接表的主键,则大小不会太差,性能也会很好。这种方法也是最简洁和最容易管理的。

为每种成分创建一个链接表将是不必要的复杂和低效。