gpt4 book ai didi

mysql - 实现基于父ID关系的查询

转载 作者:行者123 更新时间:2023-11-29 14:04:08 24 4
gpt4 key购买 nike

我有一个简单的表,需要半复杂的信息检索。该表为:

表格 - 帖子

id        - bigint(20)
title - varchar(250)
content - longtext
parent_id - int(20)
type - varchar(50)

目前,我在帖子表中输入了三个不同的类型值 - 群组、讨论和回复。数据的存储方式如下:

  1. 回复的parent_id 是讨论 ID。
  2. 讨论的parent_id 为群组 ID(或 0)。

该网站的成员可以加入一个群组,我想将该群组的讨论和回复包含在他们的电子邮件摘要中。目前,我正在使用 LEFT JOINS 来完成此任务,但它变得很重,因为我必须有很多连接才能完成它,并且随着表的快速增长,性能会下降。

有人对更好的实现有任何建议吗?我已经研究了嵌套集模型,但我认为它不会对我有帮助,因为检索是基于顶级组条目上的操作,因此检索到的数据需要与其绑定(bind)。

非常感谢您的想法和回应。

最佳答案

如果您的数据模型是分组讨论中的回复,那么您应该为这些实体拥有三个不同的表。这为 SQL 引擎提供了更多信息来优化查询。

现在可能已经太晚了。在这种情况下,您需要确保拥有适当的索引。例如,要获取群组中的所有讨论,可以使用如下查询:

select *
from posts p
where p.parent_id = XXX and p.type = 'Discussion'

这表明您需要一个关于 type 的索引,可能是 posts(type, id)。要了解哪些其他索引可能有用,您需要修改您的问题以包含您正在使用的一些查询。

关于mysql - 实现基于父ID关系的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14629533/

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