如何在 MySQL 中使用 WHERE 子句加速缓慢的'SELECT COUNT(*)...”查询?

DDD
发布: 2024-10-31 02:10:02
原创
361 人浏览过

How Can I Speed Up a Slow

使用Where子句优化“SELECT COUNT(*)...”

当前的问题涉及明显缓慢的“SELECT” MySQL 中的 COUNT(*)" 查询,即使应用了“WHERE”子句也是如此。为了应对这一挑战,了解 MySQL 的存储机制至关重要。

聚集主键

本实例中使用的存储引擎 InnoDB 使用聚集主键。这意味着主键与数据行一起存储在同一数据页中,而不是存储在单独的索引页中。因此,对聚集主键执行范围扫描需要扫描所有行,包括其潜在的宽列值。相关表包含 TEXT 列,进一步加剧了性能问题。

优化策略

要优化此查询,请考虑以下策略:

  1. 优化表:运行“OPTIMIZE TABLE”可确保数据页按顺序物理排序。此优化可能会提高聚集主键上的范围扫描的性能。
  2. 创建附加索引:考虑仅在“change_event_id”列上创建非主索引。这将在索引页中创建该列的副本,与聚集主键相比,扫描速度要快得多。创建索引后验证解释计划以确认其利用率。

其他建议

要进一步增强性能,请考虑修改“change_event_id”列如果它从零递增,则为“BIGINT UNSIGNED”。此更改可以减少存储要求并提高性能。

以上是如何在 MySQL 中使用 WHERE 子句加速缓慢的'SELECT COUNT(*)...”查询?的详细内容。更多信息请关注PHP中文网其他相关文章!

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