相同限制的 MySQL SELECT 查询越来越慢

Posted

技术标签:

【中文标题】相同限制的 MySQL SELECT 查询越来越慢【英文标题】:MySQL SELECT queries of same limits getting slower and slower 【发布时间】:2013-09-06 23:03:00 【问题描述】:

我在我的网站上使用 phpmysql,并且必须汇总一些指标来为客户生成报告。这些指标可以在一个 400 万行的表中找到,该表使用 MyISAM 引擎并分布在 12 个 PARTITIONS 中。

在 PHP 循环(for 循环)中,对于每次迭代,我检索 1000 行与特定 id 匹配的行

id = X OR id =Y OR id = Z

(我没有对 UNION 1 id UNION 2 等临时表使用任何内部连接,因为它有点慢,可能是因为分区选项依赖于 id 的哈希)。

问题是查询越来越慢。它可能是由逐渐缓存的东西引起的,但我不知道是什么。

任何帮助都非常宝贵,非常感谢。

【问题讨论】:

您的大表中的行数是否随着时间的推移而增长?您多次搜索的 id 列上是否有索引? (OR 子句会导致多次搜索。)id 是主键还是唯一键? 矩阵的聚合...如果仍然存在与其他表相关的连接,是否还有其他我们没有看到的东西。您能否发布导致问题/延迟的查询。 id是主键,没有join。作为一个更简单的解决方案并出于长期目的,我现在正在使用 Hadoop!问题解决了!感谢大家的帮助! 【参考方案1】:

当您使用从索引深处开始的 LIMIT 时,MySQL 会变得非常慢。查看这篇文章以优化后期行查找:

http://explainextended.com/2009/10/23/mysql-order-by-limit-performance-late-row-lookups/

【讨论】:

无论如何,如果链接失效,您可以使用该链接的相关摘录来更新您的答案? 刚刚检查过,是的,我认为是问题所在,谢谢!我开发了另一种解决方案,谜团解开了!

以上是关于相同限制的 MySQL SELECT 查询越来越慢的主要内容,如果未能解决你的问题,请参考以下文章

mysql 优化常用语句

MySQL 查询慢,按限制按顺序分组

MySQL降序限制

MYSQL 查询慢 SELECT DISTINCT

MySQL - SELECT WHERE field IN(子查询) - 为啥非常慢?

mysql慢查询