gpt4 book ai didi

mysql - 长多对多数据库表 : best performance practice

转载 作者:搜寻专家 更新时间:2023-10-30 20:16:34 25 4
gpt4 key购买 nike

我对我的 MYSQL 数据库设计的性能有疑问。

A表有很多条记录,比如说一百万条,B表也有一百万条。还有另一个表 C,其中 A 的每个记录 ID 都连接到 B 中的每一行,并且此连接具有附加值 1 或 0。因此从功能上讲,A 中的每个记录都有一个 bool 向量,其中 B 包含“变量”向量和 1 或 0 是值。在底部的图片中对其进行了更直观的解释。

表C会有很多写入和读取操作(从A的一条记录中选择所有值),所以该表的使用非常活跃。表 C 真的很长,一百万乘以一百万行。

  • 我的第一个问题是,表格的长度是否会影响性能问题?数据库需要非常快。
  • 我的第二个问题是,如果这个设计不好,是否有更好的设计来实现我想要的。例如,我可以考虑将每个 A 记录的整个 B 向量存储在 A 中的每一行中。那么表 C 将不是必需的。但它会使选择、阅读、写作变得更加困难。

table

最佳答案

表设计很好,应该不是问题,因为您可以通过应该被索引的 ID 访问记录。根据您的典型查询,您还应该考虑添加复合索引 (c(a_id,b_id), c(a_id,value), c(b_id,value) , c(a_id,b_id,value)).

但是,由于只有两种状态,0 和 1,您可以决定只存储其中一种。 IE。如果只存储所有状态 1 的记录,则所有不在表中的对都隐含地具有状态 0。当状态分布不均匀时(例如 90% 的记录具有状态 0 而只有 10% 的记录具有状态 1)或者您通常只访问其中一个状态(例如,您总是寻找 1),这尤其有用。

关于mysql - 长多对多数据库表 : best performance practice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36082817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com