MYSQL中的生产缓慢查询,但没有开发

时间:2016-02-20 00:01:34

标签: mysql sql

由于某种原因,以下查询在我的生产机器上需要30秒,在本地不到一秒钟。我已经比较了char编码,索引等

有什么想法吗?

SELECT ct.*, c.first_name as customer_first_name, c.last_name as customer_last_name, c.company_id as company_id 
FROM `communication_pieces` 
JOIN contact c ON c.contact_id = communication_pieces.contact_id 
JOIN customer_transactions ct ON ct.communication_piece_id = communication_pieces.id 
JOIN campaign_iterations ci ON ci.id = communication_pieces.campaign_iteration_id 
WHERE (communication_pieces.campaign_iteration_id = '1273') 
AND (communication_pieces.status NOT IN ("undeliverable","not_delivered","address_rejected")) 
ORDER BY ct.transacted_at ASC LIMIT 2000 OFFSET 0

在做解释时我注意到的一件事是生产中的类型是ct表的索引和开发中的ref。我知道等级指数更差,但可能是造成差异的原因是什么?

1 个答案:

答案 0 :(得分:0)

好的,事实证明,不同版本的MySql选择索引使用的方式存在差异。我能够通过使用rails USE INDEX语法强制索引,并在生产中获得相同的速度。如果有人遇到类似的问题,请添加此处。