针对执行时间较慢的大型表的 MySQL 查询优化
您的 MySQL 查询执行时间超过一分钟,因为它缺乏有效的索引优化数据检索。表的巨大规模,尤其是超过 100 万条记录,加剧了问题。
在 id 列上对表建立索引对于加快涉及按 id 排序的查询至关重要。但是,根据提供的信息,仅靠索引似乎是不够的。
以下是一些提高查询性能的建议:
使用带有 WHERE 子句的范围查询
不要使用 LIMIT 来检索特定范围的记录,而是考虑使用带有关系运算符的 WHERE 子句。例如,以下查询使用范围查询来选择 id 值大于或等于 499501 的记录,并将结果限制为 500 行:
select * from `ratings` where id >= 499501 limit 500;
此查询的执行速度应该快得多,因为它利用了索引id 列以有效地找到所需的记录。
解释查询计划
要进一步解决问题,请执行 EXPLAIN 查询以深入了解查询执行计划。这将提供有关查询类型、所使用的索引以及要扫描的估计行数的详细信息。
explain select * from `ratings` where id >= 499501 limit 500;
排除死锁
死锁发生在以下情况两个或多个并发事务等待彼此释放锁,从而有效地阻止其中一个事务继续进行。虽然提供的信息并未表明死锁是一个可能的原因,但值得考虑。
以上是为什么我的 MySQL 查询大表这么慢,如何优化?的详细内容。更多信息请关注PHP中文网其他相关文章!