与本地mysql安装相比,RDS性能较低

我在AWS上运行基本configuration的RDS服务器(rd3.medium)。 我试图运行这个查询,在我的本地计算机上运行几毫秒,以及一个基本的Web服务器,我已经安装了MySQL服务器。 但是,当我在RDS上运行它需要20秒。 我正在使用常规configurationSSD进行存储。

SELECT DISTINCT p2.id FROM wp_posts p2 INNER JOIN wp_postmeta pm2 ON pm2.meta_key = 'wpcr3_review_post' AND pm2.post_id = p2.id INNER JOIN wp_posts p3 ON p3.id = pm2.meta_value AND p3.post_status = 'publish' INNER JOIN wp_postmeta pm3 ON pm3.meta_key = 'wpcr3_enable' AND pm3.meta_value = '1' WHERE p2.post_type = 'wpcr3_review' 

当我运行EXPLAIN时,我注意到它使用了一个临时表,所以我想知道在某个基本的MySQL服务器安装时RDS不能很好地处理这个问题。

 1 SIMPLE pm3 ref meta_key meta_key 576 const 334 Using where; Using temporary 1 SIMPLE pm2 ref post_id,meta_key meta_key 576 const 1335 Using where 1 SIMPLE p2 eq_ref PRIMARY,type_status_date PRIMARY 8 deaddictioncentres_staging.pm2.post_id 1 Using where 1 SIMPLE p3 eq_ref PRIMARY PRIMARY 8 deaddictioncentres_staging.pm2.meta_value 1 **Using index condition;** Using where; Distinct 

我发现在所有其他服务器上的唯一区别是RDS服务器添加使用索引条件; 没有其他人做。

更新我发现了使用索引条件的区别; 原因是从5.5到5.6。 但是我不明白为什么从5.5到5.6会让事情变得更慢。

所以我想出了答案。 问题是由于错误的查询devise。 (这个查询来自Wordpress插件,所以这并不奇怪)。 第三次连接不仅毫无价值,而且在Post Meta表中的每个logging的wpcr3_enable设置为1 * WP Post表中的每个logging的每个logging附加了“创build”1条logging,导致500,000行。 我相信本地的速度只是发送/处理数据的一个问题。 添加的DISTINCT关键字只是掩盖了问题,实际上在正确编码的查询中是不必要的。