首页 >数据库 >mysql教程 >尽管使用了主索引,为什么我的'SELECT COUNT(*) FROM change_event”查询如此慢?

尽管使用了主索引,为什么我的'SELECT COUNT(*) FROM change_event”查询如此慢?

Susan Sarandon
Susan Sarandon原创
2024-10-30 22:43:291118浏览

Why is my

尽管使用了索引,“SELECT COUNT(*)”查询的性能仍然很慢

上下文:

查询“SELECT COUNT(*) FROM change_event me WHERE change_event_id > '1212281603783391';” MySQL 中的执行速度异常缓慢,执行时间超过一分钟。尽管“change_event_id”列上存在主索引,但还是如此。

InnoDB 聚集主键:

在 InnoDB 中,主键是聚集的,这意味着它们是与数据页中的数据行一起存储。这需要在范围扫描期间扫描潜在的大行数据,这会降低性能。 “change_event”表包含一个 TEXT 列,进一步增加了行的宽度。

优化技术:

  • 优化表: 运行“OPTIMIZE TABLE”可以重新排列数据页以按主键排序。这可能会提高聚集主键上的范围扫描的性能。
  • 创建附加非主索引:仅在“change_event_id”列上创建非主索引可以提供扫描一系列值的更快方法。创建索引后应检查解释计划,以确保其利用率。

其他建议:

  • 调整数据类型: 如果“change_event_id”列从零递增,请考虑将其数据类型更改为“bigint unsigned”以避免负值。

以上是尽管使用了主索引,为什么我的'SELECT COUNT(*) FROM change_event”查询如此慢?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn