我正在使用以下代码来选择我标记的所有照片
select pid from photo_tag where subject = me()
但现在我只想选择某个相册中的照片,有两种方法可以做到这一点。
select pid from photo where aid = $aid1 and pid in ( select pid from photo_tag where subject = me() )
或者
select pid from photo_tag where subject = me() and pid in ( select pid from photo where aid = $aid1 )
据我所知,他们都做同样的事情,而且工作正常。
问题是它不适用于第二张、第三张等专辑。
如果我执行以下操作
select pid from photo_tag where subject = me() and pid in ( select pid from photo where aid = $aid1 or aid = $aid2)
它只会从其中一个相册中选择照片,而不是两者都选择,如果我替换 or ,它将选择我从第一个相册中标记的照片和第二个相册中的所有照片。
所以查询最终会变成类似
SELECT pid from photo where ( pid in (select pid from photo where aid = $aid1 and pid in (select pid from photo_tag where subject = me() ) ) or pid in (select pid from photo where aid = $aid2 and pid in (select pid from photo_tag where subject = me() ) ) )
当我进行查询以获取我标记的所有照片时,大约需要 900 毫秒,据我所知返回几百张照片。我试图将其限制为大约 6 或 7 个相册,即大约 150 张照片,但我认为查询效率不够高,因为我在大约 15 分钟前开始运行查询并且它仍在加载,所以我不认为它永远会返回任何东西。
如果我单独查询每张专辑而不是所有专辑一起查询会更快吗?
还有什么可以更好的。
我很感激这里的任何帮助。
谢谢