0

ユーザーがまだ見ていない最初の 10 個の質問を取得したい。そのためには、そのユーザーが見た質問を user_questions という名前のテーブルに保存する必要があります

したがって、私のクエリは次のとおりです。

SELECT * from questions WHERE questions.id NOT IN (select question_id from user_questions where user_id=1) LIMIT 0, 10

私が学んだことから、このクエリは同様の結合クエリと比較して遅くなるはずです。同じ結果を生成する結合クエリを作成するにはどうすればよいですか?

4

1 に答える 1

3

同等の結合クエリは次のとおりです。

select q.*
from questions q left outer join
     user_questions uq
     on uq.question_id = q.id and
        uq.user_id = 1
where uq.user_id is null
limit 0, 30

ただし、結果はランダムな順序ではありません。通常、limit節では、. も指定しますorder by

于 2012-12-03T17:07:43.720 に答える