MySQL查询从多个表中检索数据作为嵌套树

时间:2013-02-15 20:26:26

标签: php mysql database performance

在SO上发现了类似的问题,但没有任何帮助。这是我的问题:

我有一张桌子,'事件',相当大。 还有这两个表:'照片'和'视频'。 每个'事件'记录都有一个eid(事件ID)。 每个“照片”和“视频”记录都有一个aeid(关联事件ID)。

要获取20个事件的事件数据,我现在正在运行PHP,如下所示:

array = get top 20 events
for these 20 events
  array['photos'] = get all photos
  array['videos'] = get all videos
return events array

我发现这运行得太慢了。可能是因为这相当于41个mysql查询。我意识到我需要以某种方式使用JOIN(我想我至少做了),但我无法想象我们如何构建我的查询以便它以与我在上面的伪代码中执行它相同的方式嵌套照片和视频。另外,我认为我没有时间切换到postgres(除非非常强烈建议);我正在使用足够大的代码库,只有一个开发者(我)才会头疼。

如果您发布文件/手册,我愿意阅读。但是,我已经在一些地方这样做了无济于事。谢谢!

1 个答案:

答案 0 :(得分:0)

尝试类似..

 SELECT E.eid, V.aeid, P.aeid 
 FROM events E, videos V, photos P 
 WHERE E.eid='$ID' and V.aeid='$ID' and P.aeid='$ID' 
 ORDER BY E.eid desc

未经测试,但你应该明白