【发布时间】:2013-08-20 16:59:40
【问题描述】:
我正在对 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 个条目。其余的要小得多。
我意识到我应该索引大表中的一些行。隔开它。还有其他问题吗?
【问题讨论】:
-
你为什么不尝试加入?
-
我听说过 JOINS。我不知道你可以像下面的 TI 那样嵌套它们。猜猜这就是乐于助人和粗鲁之间的区别。