解决 MySQL 上缓慢的“SELECT COUNT(*)”查询
对change_event 表的查询,对超过特定change_event_id 的行进行计数,正在经历严重的延误。但为什么?让我们深入研究一下可能的原因。
揭秘InnoDB的行为
MySQL的InnoDB引擎使用聚集主键,这意味着主键与数据页中的行数据一起存储,而不是比单独的索引页。因此,范围扫描(例如您的扫描)需要扫描数据页中所有可能较宽的行。表的 xml_diff 列(一种 TEXT 数据类型)加剧了这一因素。
优化策略
为了加速查询,有两种方法值得考虑:
其他提示:
要进一步提高性能,请考虑将 change_event_id 列更改为 bigint unsigned。此步骤可以防止负值,还可以简化处理。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3