我有一个Rails应用程序,目前正在大规模遇到性能问题。我在后端使用Rails 4和MySQL。

我有一个名为Coaches的模型,我想对我的回答进行分组,以便它只向教练发送不同的电子邮件。

这是一个例子:

Coach.group(:email)

但是,当我在生产工作负载中使用此代码时,Active Record生成结果所花费的时间太长,请参见下文。

Coach Load (193743.7ms)  SELECT `coaches`.* FROM `coaches` WHERE `coaches`.`deleted_at` IS NULL GROUP BY `coaches`.`email`


我在教练表中的email和delete_at列上都有一个索引。

过去有人遇到过类似问题吗?

最佳答案

您还需要在indexing列上应用deleted_at,并且一种正确的解决方案是使用分页(例如以限制格式使用数据)在这种情况下将为您提供帮助。

10-04 17:52