gpt4 book ai didi

mysql - SQL 多重 Select ... where id in 和 DISTINCT

转载 作者:行者123 更新时间:2023-11-29 13:39:18 25 4
gpt4 key购买 nike

我正在 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并考虑至少在foreign keys上创建索引

尝试以下操作

SELECT DISTINCT TP_Test_Info.id, TP_Test_Info.name
FROM TP_Test_Info
JOIN TP_Test_Sections
ON TP_Test_Sections.test_id = TP_Test_Info.id
JOIN TP_Test_Questions
ON TP_Test_Questions.section_id = TP_Test_Sections.id
JOIN TP_Student_Answers
ON TP_Student_Answers.question_id = TP_Test_Questions.id
WHERE TP_Student_Answers.student_id = 751

关于mysql - SQL 多重 Select ... where id in 和 DISTINCT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18304622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com