【发布时间】:2013-09-14 14:58:30
【问题描述】:
示例:我有一些articles 和comments,我想得到这样的东西:
[{
title: "Article 1",
content: "Super long article goes here",
comments: [
{ author: "Troll", message: "You suck, Sir!" },
{ author: "SpamBot", message: "http://superawesomething.com/"}
]
},{
title: "Article 2",
content: "Another long article goes here",
comments: [ ... ]
}]
现在我看到了两种解决方案:
- 首先获取文章,然后在第二个查询中获取带有
IN条件的 cmets,最后将 cmets 添加到相应的文章中。 - 好旧的连接。一方面,我仍然需要大量摆弄数据才能进入我想要的结构。但除此之外,我有点担心,因为每个评论都会传输像
articles.content这样的有效负载 - 除非有办法进行我不知道的加入。
我希望我的 SQL 文盲让我错过了简单的解决方案。
【问题讨论】:
-
我不能代表 postgresql,但 MySQL 在处理分层数据方面非常糟糕。您在此处列出的第一种方法没有任何问题。可能是我要走的路。
-
@invertedSpear:似乎是最好的方法,除非完全读取一致性很重要。由于这个问题对我来说似乎并不特别陌生,我希望一些 RDBMS 可以真正解决它。
-
相当肯定 SQLServer 是您对分层数据的回答。我认为 TSQL 有一些很好的函数来处理它,但是根据您的应用程序 SQL 驱动程序,您可能会发现您仍在处理内容列中更大的有效负载。
-
@invertedSpear:Postgres 可以像 SQL Server 一样执行分层查询(尽管我认为这里不需要它们)——而且 Postgres 具有原生 JSON 支持。
标签: mysql sql postgresql