我对我的MYSQL数据库设计的性能有疑问。
表A有很多记录,比如说一百万,表B也有一百万。还有另一个表C,其中A的每个记录id连接到B中的每一行,并且此连接具有附加值1或0。因此从功能上讲,A中的每个记录都有一个布尔向量,其中B包含B的“变量”向量,值为1或0。在底部的图片中以图形方式对其进行了详细说明。
表C将具有很多写和读操作(从A记录中选择所有值),因此该表非常活跃。而表C确实很长,是一百万行乘一百万行的结果。
表格设计很好,应该不会有问题,因为您通过应该索引的ID访问记录。根据您的典型查询,你也应该考虑增加综合指数(c(a_id,b_id)
,c(a_id,value)
,c(b_id,value)
,c(a_id,b_id,value)
)。
但是,由于只有两种状态,0和1,您可以决定只存储其中一种。即,如果仅存储所有状态1记录,则不在表中的所有对都具有状态0,然后隐式表示。当状态分布不均时(例如,90%的记录的状态为0,而只有10%的状态为1),或者您通常仅访问其中一个状态(例如,您始终查找1),这尤其有用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句