SELECT t4.*, COUNT(t1.id) AS num FROM cmf_wrongbook AS t1 LEFT JOIN cmf_question_with_classification AS t2 ON t1.qid = t2.question_id LEFT JOIN cmf_question_classification AS t3 ON t3.id = t2.classification_id LEFT JOIN cmf_question_bank_knowledge AS t4 ON t4.id = t3.bank_knowledge_id WHERE t1.uid = 1 AND t1.source = 5 GROUP BY t4.id ORDER BY t3.id ASC;

改进点:

  1. 子查询改为连接查询
  2. 去掉不必要的子查询,直接在联接查询中筛选符合条件的记录
  3. 将子查询中的聚合函数移动到主查询中
  4. 将不必要的表别名去掉
  5. 将条件放到联接查询中进行筛选,减少 GROUP BY 的使用
  6. 使用简洁的语句,避免重复代码
优化 SQL 查询:统计特定用户错误记录的知识点数量

原文地址: https://www.cveoy.top/t/topic/ofnn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录