为什么我对change_event 表的'SELECT COUNT(*)”查询如此慢?

Patricia Arquette
发布: 2024-10-31 01:40:02
原创
324 人浏览过

Why are my

解决 MySQL 上缓慢的“SELECT COUNT(*)”查询

您对change_event表的查询,对超过特定change_event_id的行进行计数,正在经历严重的延误。但为什么?让我们深入探讨一下可能的原因。

揭秘 InnoDB 的行为

MySQL 的 InnoDB 引擎使用集群主键,这意味着主键与数据页中的行数据一起存储,而不是比单独的索引页。因此,范围扫描(例如您的扫描)需要扫描数据页中所有可能较宽的行。表的 xml_diff 列(一种 TEXT 数据类型)加剧了这一因素。

优化策略

为了加速查询,有两种方法值得考虑:

  • 优化表:此命令将数据页重新组织为排序顺序,可能会提高范围扫描的效率。
  • 创建附加索引: 仅在change_event_id 列上建立非主索引会在索引页中创建该列的副本。该索引的扫描速度比数据页快得多。创建后验证解释计划以确认其利用率。

其他提示:

要进一步提高性能,请考虑将 change_event_id 列更改为 bigint unsigned。此步骤可以防止负值,还可以简化处理。

以上是为什么我对change_event 表的'SELECT COUNT(*)”查询如此慢?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!