この問題を解決するために Web を検索しましたが、うまくいきませんでした。これは、SOに関する私の最初のSQL質問でもあります:-)
私は単純な質問をする単純な男です - 実演させてください
select asy.aim_student_id, ast.aim_test
from aim_student_test ast
join aim_student_absent asa on (asa.aps_yr = ast.aps_yr and asa.aim_test = ast.aim_test and asa.aim_id = ast.aim_id)
--join aim_student_qst asq on (asq.aps_yr = ast.aps_yr and asq.aim_test = ast.aim_test and asq.aim_id = ast.aim_id)
join aim_student_yr asy on (asy.aps_yr = ast.aps_yr and asy.aim_student_yr_id = ast.aim_student_yr_id)
where ast.aps_yr = '2012'
ご覧のとおり、join aim_student_qst はコメントアウトされています。
aim_student_qst は、すべての質問に対する学生の回答を一覧表示するテーブルです。したがって、1 人の学生は、このテーブルに ~50 のケースを持つことになります。何がクエリを遅くしているのかをテストするために、aim_student_qst の結合をコメントアウトしただけで、クエリが確実に高速化されました。
オラクルがやっていることは進んでいると思います-ああ、それらのテーブルが必要です。それらを1つの大きなテーブルに入れ、正確に何が必要かを探しましょう。これが、aim_student_qst で他に何もしていないにもかかわらず、クエリが遅くなる理由です。これは正しいです?
たとえば、50 問すべてではなく、生徒ごとに 1 つの問題を選択するだけで済みます。これを行う方法はありますか?
ありがとうございました!!!!!