MYSQL查询的优化主要参考哪些手册?

我写了一段查询,但是我觉得太长了。想要优化一下,不知应该参考哪些手册和资料。

SELECT
    班级名单.姓名,
IF
    ( ISNULL(阶段详情和总分.变动原因 ), "无纪录",阶段详情和总分.变动原因 ) AS 最近变动,
IF
    ( ISNULL(阶段详情和总分.操行分 ), 0,阶段详情和总分.操行分 ) + 85 as 总分
FROM
    ( SELECT `姓名` FROM cnos.`学生学籍号` WHERE `班级` LIKE '班级名称' )班级名单
    LEFT JOIN (
    SELECT
        阶段变化详情.*,
        全部操行总分.操行分 
    FROM
        (
        SELECT
            `姓名`,
            GROUP_CONCAT( `事件详情`, '  ', `分值变化`, '  ', MID( `发生时间`, 6, 5 ) ORDER BY 发生时间 SEPARATOR "\r\n" ) AS 变动原因 
        FROM
            `操行详情校` 
        WHERE
            `发生时间` >= '详情起始时间' 
            AND `发生时间` < '详情终止时间' 
        GROUP BY
            `姓名` 
        ) 阶段变化详情
        LEFT JOIN ( SELECT `姓名`, sum( `分值变化` ) AS 操行分 FROM cnos.`操行详情校` WHERE cnos.`操行详情校`.`发生时间` > '总分统计起始时间' GROUP BY `姓名` ) 全部操行总分 ON 阶段变化详情.`姓名` = 全部操行总分.`姓名` 
    )阶段详情和总分 ON 班级名单.姓名 =阶段详情和总分.姓名 ORDER BY 姓名
CNOS
讨论数量: 1

如果你是指SQL跑的太慢,那么优先查看 Explain,使其能用上索引,全表查询肯定慢; 如果是指写的SQL太烂, emm 减少子查询,转化成 Join 或者 exist 语句。 手册的话,推荐 《高性能MySQL》

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!