我有this MySQL表,但一个评论需要一个查询。如果有20条评论,则会显示20条查询以显示该页面。有什么解决方案吗?是否可以编写MySQL端函数以将查询大小减少到一个?
答案 0 :(得分:5)
除了存储父级之外,还存储(在单独的列中)用于发布评论的项目/文章的ID。然后只查询具有相同项ID的所有注释,并在获取数据库行后构造层次结构。
答案 1 :(得分:2)
您可以查看Joe Celko的“嵌套集”算法。 它为分层数据集提供了非常有效的“一次查询”检索,但总是有成本,而且成本是当你插入表格时需要更多的工作量。
对于高写活动,我不确定我会亲自去做。
我更有可能将其关注到内存缓存中,并在有人发布到特定线程时使缓存失效。
但是,这些解决方案中的任何一个都比运行20个查询以检索20条评论更好。
答案 2 :(得分:1)
如果使用存储过程,可以在从php到mysql的单个调用中执行此操作。我坚持使用邻接列表与嵌套集实现,因为你只会遇到更多的痛苦。
见这里:Generating Depth based tree from Hierarchical Data in MySQL (no CTEs)
希望这会有所帮助:)