将重复的MySQL行压缩到链接PK&;FK表?

将重复的MySQL行压缩到链接PK&;FK表?,mysql,Mysql,问题。 所以我有三张桌子。这些表是通过将Midi文件解析到DB中而存在的。因此,关系如下 文件-1-2-Many->跟踪-1-2-Many->消息 因此,每个Midi文件可以有多个Midi曲目“曲目”,每个曲目可以有多条消息 我将文件链接到多个曲目的方式是使用FK,我还使用FK将单个曲目链接到该曲目中的每个消息 我在邮件中注意到很多数据是重复的,唯一的区别是它们链接到的轨迹 我的问题。 是否可以自动告诉MySQL在消息中查找重复项,然后只创建一个行实例,并创建一个指向每个磁道的链接表,以便删除重

问题。
所以我有三张桌子。这些表是通过将Midi文件解析到DB中而存在的。因此,关系如下

文件-1-2-Many->跟踪-1-2-Many->消息

因此,每个Midi文件可以有多个Midi曲目“曲目”,每个曲目可以有多条消息

我将文件链接到多个曲目的方式是使用FK,我还使用FK将单个曲目链接到该曲目中的每个消息

我在邮件中注意到很多数据是重复的,唯一的区别是它们链接到的轨迹

我的问题。
是否可以自动告诉MySQL在消息中查找重复项,然后只创建一个行实例,并创建一个指向每个磁道的链接表,以便删除重复项

我的目标。
我想尽量减少9亿行,因为我只在笔记本电脑上,而且扫描要花很长时间


谢谢。

您需要在
曲目
消息
之间建立多对多关系。但对于900M行,这对您的系统来说将是一项艰巨的任务。每条磁道的消息是否唯一?磁道可引用的唯一消息的已知最大数量是多少?您可以在tracks table json字段和messages table with hash、message字段中存储每条曲目的消息哈希列表。