qq_36077422 2019-03-07 17:31 采纳率: 0%
浏览 1761

SQL 语句优化 GROUP BY 使用 HAVING 查询非常慢,和不添加筛选条件情况相差几十倍速度

这是不加HAVING 条件的,时间不到1S
这是添加HAVING 条件,为了赛选Ks_Student_List(课消表) 学员课消次数大于3,时间超过30S
使用HAVING 添加条件赛选,为了赛选Ks_Student_List(课消表) 学员课消次数大于3,效率极低,不明原因,请大神指点

  • 写回答

1条回答

  • 憧憬blog 2023-03-15 08:39
    关注

    您好,根据您提供的信息,添加 HAVING 条件后的查询效率明显下降,可能有以下原因:

    1. 子查询。

    查询语句中使用子查询可能会导致性能下降,因为子查询需要进行多次查询,而且每次查询只返回一个结果。建议您尝试使用 JOIN 操作,将 Ks_Student_List 表与其他表关联查询,以减少子查询的次数。

    1. 索引。

    没有为需要查询的列添加适当的索引可能导致查询性能下降。请检查 Ks_Student_List 表中需要使用的列是否有添加索引,如果没有,则需要添加相应的索引来提高查询效率。

    1. 数据量。

    查询的数据量越大,查询时间越久。如果 Ks_Student_List 表中的数据非常多,添加 HAVING 条件后查询时间就会比不添加条件的长很多。建议您考虑分页查询或者优化查询语句,以缩短查询时间。

    1. 服务器性能。

    如果查询语句中使用的表过多或者数据量过大,服务器性能可能会影响查询效率。建议您检查服务器配置是否合理,并且进行优化,以提高服务器性能。

    综上所述,您可以结合以上原因来优化您的查询语句。可以试试以下几个方法:

    • 使用 JOIN 操作,避免使用子查询
    • 为查询需要使用的列添加索引
    • 考虑进行分页查询或优化查询语句,以减小数据量
    • 检查服务器配置,进行优化

    希望能对您有所帮助!

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料