我有两个表,Items和Items_People。每个项目都有一个id和一个userid(拥有该项目的人)。 Items_People(显示项目与谁共享的表)具有itemid和userid。我想获得用户拥有的项目列表或与该用户共享的项目
这是我到目前为止所拥有的:
SELECT * FROM Items
WHERE id IN (SELECT itemid as id FROM Items_People where userid = 1)
OR userid=1
这确实有效,但我不确定使用WHERE IN的嵌套选择是否是最快的方法。我应该使用某种加入吗?
答案 0 :(得分:0)
做一些测试,看看哪个运行速度更快。我相信这个查询可以解决你在问题中所说的内容。
SELECT *
FROM Items
OUTER JOIN Items_People on Items.id = Items_People.itemid AND Items_People.userid = 1
WHERE Items.userid=1
显然,首先运行此查询以确保它为您提供相同的结果。然后测试每个查询,看看你是否发现速度有任何差异。