首页 > 解决方案 > MySQL 对非常基本的查询、索引、外键和所有内容的慢连接似乎都对齐

问题描述

我有两个模式,两者都是相同的,其中一个数据少了大约 5 倍,并且使用相同的索引、外键、数据库服务器以及我能想到检查的任何其他内容,查询速度要慢 120 倍。

这是两个查询:

-- Bigger Database, takes .5 seconds, has ~900k and 80 records

select *
  from schemaA.bb_quote
  inner join schemaA.scb_user
    ON scb_user.usr_uid = bb_quote.q_usr_uid
  order by q_quoteid desc
  limit 20;

-- smaller database, takes 2 minutes, has ~211k and 4 records

select *
  from schemaB.bb_quote
  inner join schemaB.scb_user
    ON scb_user.usr_uid = bb_quote.q_usr_uid
  order by q_quoteid desc
  limit 20;

我运行以下命令来解释命令并且解释不同。

explain select *
          from schemaA.bb_quote
          inner join schemaA.scb_user
            ON scb_user.usr_uid = bb_quote.q_usr_uid
          order by q_quoteid desc
          limit 20;

快速查询

explain select *
          from schemaB.bb_quote
          inner join schemaB.scb_user
            ON scb_user.usr_uid = bb_quote.q_usr_uid
          order by q_quoteid desc
          limit 20;

在此处输入图像描述

第二个以非常不同的解释结束。我不确定下一步要采取什么调试步骤。

我读过很多次,这是他们没有足够的内存的结果,它需要创建一个文件来完成它的工作。这是在 AWS RDS 中运行的,并且监控确实有大约 20gig 的已用硬盘空间下降,然后它恢复了所有内存,而其他查询没有这样做。

分辨这两种模式之间有什么不同的最佳方法是什么?

调试完成

来自评论的附加信息

标签: mysqlinner-joinquery-performance

解决方案


推荐阅读