MySQL データベースのテーブルで複数の「where id in」句を使用してクエリを実行しています。結果の数を減らすために、各クエリに DISTINCT を入れました。まだMySQLテーブルをロックしています。私が知らないグリッチ、またはいくつかの DISTICT を削除してみる必要がありますか? 最初の DISTINCT だけが必要です。
SELECT DISTINCT id, name
FROM TP_Test_Info
WHERE id IN (SELECT DISTINCT test_id
FROM TP_Test_Sections
WHERE id IN (SELECT DISTINCT section_id
FROM TP_Test_Questions
WHERE id IN (SELECT DISTINCT question_id
FROM TP_Student_Answers
WHERE student_id = 751)))
最後のテーブル TP_Student_Answers には、約 32,000 のエントリがあります。残りははるかに小さいです。
大きなテーブルの一部の行にインデックスを作成する必要があることに気付きました。間隔をあけた。他に問題はありますか?