首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >连接表大幅度增长

连接表大幅度增长
EN

Stack Overflow用户
提问于 2012-12-17 14:55:43
回答 3查看 76关注 0票数 1

我在我的应用程序的数据库(MySQL)中有一个连接表,它会大量增长。

我有两个型号的用户和产品,用户有许多产品要查看,产品属于许多用户如何查看它。

开始时,所有用户都有要查看的所有产品,用户可以编辑他可以查看的产品。

表大小为(n*m) n的问题是用户数(很大),m是产品数量(也很大),而表上的读取操作将很慢。

示例:我有3个用户的id:"1,2,3“

三个产品的身份证:"1,2,3“

因此,users_products表将是:

user_id,product_id 1,1 1,2 1,3 2,1 2,2 2,3 3,1 3,2 3,3

我愿意接受所有的解决方案,从重新设计这个部分开始使用另一个数据库系统。

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-17 15:12:03

我觉得你的假设可能不是真的。即使有很多行,SQL服务器也能快速处理这类查询。如果您有好的索引,有1000万条记录的表可以被快速查询。

在进行各种早期优化之前,我建议进行一些测试。

票数 1
EN

Stack Overflow用户

发布于 2012-12-17 15:02:51

你查过Neo4J了吗?这是一个文档丰富的图表数据库,在我看来,这对于这个特殊的用例来说是完美的。你建模的方式太简单了。

每个用户和每个产品都由一个节点表示。要么在它们之间创建一个关系"IS_ABLE_TO_SEE“,要么不创建。

然后,您可以使用一系列功能再次检索此数据。我最喜欢的一种方法是使用遍历,从节点开始,然后遍历关系(您可以选择遍历的方向和方向)。但是,这对于检索彼此之间的几个深度级别的数据更为有用。

在我们的特定用例中,您可以执行一个简单的查询,返回通过"IS_ABLE_TO_SEE“关系连接到用户节点的所有产品节点。

对于没有图形数据库经验的人来说,Neo4J是非常容易访问的,正如我所说的那样,它基本上适合您在这里展示的用例。

票数 0
EN

Stack Overflow用户

发布于 2012-12-17 20:45:20

正如Pieter在Neo4J中指出的那样,我是Couchbase和Neo4J的忠实粉丝。这是一个简单的列表,关系表不太适合这些操作。

在Couchbase中,您可以使用多种方法,一种是使用简单的client.append保存产品列表,然后使用单个client.get检索列表。这有两种可能性,一种是追加前的dedupe,另一种是后面的dedupe。以极快的速度抓取一张清单,将消除任何形式的查询。

另一种方法是使用JSON,并拥有用户可以访问和查看的每个产品的数组。与第一个示例中的简单字符串相同,但如果需要的话,您可以在JSON中对其执行Map/Reduce。

在这两种情况下,它的性能都优于任何类型的查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13916474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档