gpt4 book ai didi

mysql - 减少存储在 MySQL 中的数据冗余

转载 作者:行者123 更新时间:2023-11-29 02:06:54 25 4
gpt4 key购买 nike

我感觉这个问题已经得到了解答,但我不知道所涉及的正确术语并且在我的搜索中找不到任何内容。

我正在开发产品推荐系统。我有一个项目数据库,我正在运行并确定哪些项目是相似的。例如,ItemID 1 类似于 5、7 和 8。问题是数据冗余。当我遍历整个项目集时,我会得到这样的结果:

1 5,7,8
5 7,8,1
7 8,5,1
8 5,1,7

在 MySQL 中存储这个的最佳方式是什么,这样我就可以查询它并找到与 1、5、7 或 8 相关的项目。在现实生活中,每个集合中的项目数量是不均匀的.与存储空间相比,我更关心速度,但似乎应该有一个快乐的媒介,或者如果我幸运的话,速度快且节省空间。

最佳答案

这称为“图形数据结构”。数字 (1,5,7,8) 是节点。每个连接(1-5、1-7、1-8、5-7 等)都是边。

http://en.wikipedia.org/wiki/Graph_(data_structure )

在 MySQL 中,您应该将边存储为每行一条边。如果每条边都在两个方向上连接,则应添加两个方向上的每条边(即 1-5 和 5-1)。我会像这样设置表格:

TABLE edges (
id PRIMARY KEY AUTO_INC,
from INT,
to INT
)

你会想要一个关于 (from) 或可能 (from, to) 的索引。要查找与您正在查看的对象相关的所有对象:

SELECT to FROM edges WHERE from = X;

可以对这个简单的模型进行很多改进,但这只是一个开始。

编辑:也许其中一些列名是关键词。我的错。

关于mysql - 减少存储在 MySQL 中的数据冗余,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4382384/

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