CallMe_DD 2023-03-07 16:22 采纳率: 85.7%
浏览 21
已结题

MySQL添加不等于条件后查询时间翻了至少10倍

SELECT
  一堆明细数据
FROM
  明细表
  LEFT JOIN 单据表
  LEFT JOIN 项目表
  LEFT JOIN 明细关联组织的id表
  LEFT JOIN  公司组织结构表
WHERE
  明细.`status` = 0 -- 明细状态为正常
  and 单据.`status` = 0; -- 单据状态为正常

以上语句执行时间大概是1分钟,如果加上了部门ID != "某部门ID"的条件之后,查询时间直接翻了10倍以上,这是为什么啊?

  • 写回答

4条回答 默认 最新

  • CQ.abc 2023-03-07 16:35
    关注

    添加不等于条件可能会导致查询优化器无法使用合适的索引,从而导致查询性能的下降。在这个问题中,如果添加了部门ID的条件,而该条件又没有被索引覆盖,查询优化器可能会选择全表扫描,导致查询时间大幅度增加。

    要解决这个问题,可以尝试优化查询语句,使得查询条件能够被索引覆盖,或者在查询之前确保表的索引信息是最新的。例如,可以尝试在查询条件中使用等于操作符而不是不等于操作符,或者使用覆盖索引等技术来避免全表扫描。另外,可以考虑优化查询语句的性能,如分析查询语句的执行计划、增加索引等等。望采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 8月12日
  • 已采纳回答 8月4日
  • 创建了问题 3月7日