我在 MySQL db 中的表上运行带有多个“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 个条目。其余的要小得多。
我意识到我应该索引大表中的一些行。隔开它。还有其他问题突出吗?