我有点新加入,所以我甚至不确定这是否可能。我一直在谷歌上搜索并尝试一些东西..将MySQL不存在转换为INNER JOIN
我需要什么:
选择data.id其中相应的user2data.user_id不存在其中user2data.user_id =“X”
令人兴奋的权利? :d
什么工作:
SELECT * FROM data WHERE NOT EXISTS (SELECT * FROM user2data WHERE user2data.user_id=1 AND user2data.data_id=data.id) LIMIT 100;
但是,它的速度慢,即使所有3列索引。我从另一个SO回答中尝试了一个OUTER JOIN用于此目的,但它比上述更甚。我需要的是一个INNER JOIN。
请让我知道这是否实际上是可能的,或者如果有替代方案利用索引。
感谢和最诚挚
我建议一个*复合*'上超过user2data''(USER_ID,data_id)'指数。 – eggyal
您不能对不存在的数据进行内部连接。 – shawnt00
确保您加入的列已编入索引,然后外连接应快速。 – Barmar