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クエリはintermediate_id特定のS_IDとo_idの間に接続された見つけることですが、非常に遅いようです。約10秒かかる。
link_tableは
(40M行を持つ)巨大です誰も私を助けることができますか?おかげさまで
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クエリはintermediate_id特定のS_IDとo_idの間に接続された見つけることですが、非常に遅いようです。約10秒かかる。
link_tableは
(40M行を持つ)巨大です誰も私を助けることができますか?おかげさまで
はこれを試してみてください。私の経験1としてはを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)
自己が参加してみてください:::
SELECT o_id, someColumn... FROM
link_table A, link_table b
WHERE a.s_id = 1 AND
a.o_id=b.s_id AND
b.o_id=2
新しいを使用している場合JOIN機能を使用すると、元のクエリよりも優れたパフォーマンスを発揮し、読みやすくなります
SELECT l1.o_id, someColumn...
FROM link_table l1
JOIN link_table l2 on l1.o_id = l2.s_id
WHERE l1.s_id = 1
and l2.o_id = 2
インデックスがあることを確認し、EXPLAINを使用すると、使用されているインデックスが表示されます。
サブクエリはJOINよりも新しいか、ジョークを作成したばかりか – Strawberry
そして 'INDEX(o_id、s_id)' –