ActiveRecord 性能优化

问题描述 投票:0回答:1

我有一个 ActiveRecord 查询,有时需要一分钟才能完成。我正在尝试找到优化它的方法,但不确定从哪里开始。

我有以下代码:

UserPlacement.notified.select('COUNT(responded_at) / COUNT(*)')

翻译成:

SELECT Count(responded_at) / Count(*)
FROM   `user_placements`
WHERE  `user_placements`.`deleted_at` IS NULL
       AND ( `user_placements`.`notification_sent` IS NOT NULL )
       AND `user_placements`.`user_id` = 1 

user_placements
表索引:

index_user_p_campaign_unique, ["placement_campaign_id", "user_id"]
fk__user_placements_tuser_id, ["user_id"]

我应该通过哪些步骤来分析和提高此查询的性能?

mysql activerecord query-optimization
1个回答
0
投票

如果这还不够:

INDEX(user_id)

你可以通过“覆盖索引”获得更好的性能:

INDEX(deleted_at, user_id, notification_sent, responded_at)
© www.soinside.com 2019 - 2024. All rights reserved.