mysql ActiveRecord性能优化

o7jaxewo  于 2023-05-16  发布在  Mysql
关注(0)|答案(1)|浏览(202)

我有一个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"]

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

sqyvllje

sqyvllje1#

如果这还不够:

INDEX(user_id)

你可以通过一个“覆盖指数”来获得更好的性能:

INDEX(deleted_at, user_id, notification_sent, responded_at)

相关问题