我有一个像这样的sql查询:
SELECT o_id, someColumn... FROM link_table WHERE s_id = 1 and o_id IN
(SELECT s_id FROM link_table WHERE o_id=2)
这个sql查询是为了找出特定s_id和o_id之间连接的intermediate_id,但是看起来非常慢。大约需要 10 秒。
link_table 很大(有 40M 行)
有人可以帮助我吗? 谢谢。
最佳答案
试试这个:根据我的经验,EXISTS 比 IN Cluase 提供更好的性能
SELECT o_id, someColumn...
FROM link_table t1
WHERE s_id = 1 and EXISTS (SELECT 1
FROM link_table t2
WHERE t2.s_id=t1.o_id AND t2.o_id=2)
关于MySQL子查询在大表中非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44580818/