私はレールアプリケーションを持っていますが、現在はスケール上のパフォーマンス問題に遭遇しています。私はバックエンドにRails 4とMySQLを使用しています。アクティブレコードのパフォーマンスの問題
私はCoachesというモデルを持っています。私は自分の応答をグループ化して、別個の電子メールでコーチを送信するようにしたいと思います。ここで
は一例です:私は私の本番ワークロードでこのコードを使用する場合
Coach.group(:email)
はしかし、それは下記を参照してください、アクティブレコードが結果を生成するためにはるかに時間がかかりすぎます。
Coach Load (193743.7ms) SELECT `coaches`.* FROM `coaches` WHERE `coaches`.`deleted_at` IS NULL GROUP BY `coaches`.`email`
私はコーチの表の電子メールとdeleted_at列にインデックスを持っています。
誰も過去に同様の問題に遭遇しましたか?
「コーチ」テーブルには、どのくらいのレコードがあるのか教えていただけますか? 第2に、コーチのテーブルからの応答で、すべてのコラムが必要ですか? Rails ORMには時間がかかりますので、実際に必要なものだけを選択する必要があります。 –
コーチの表に約60万レコードあります。そして、後でページ分割、ソート、および検索を行うajax-datatables-rails gemのベースとしてこのクエリを使用しています(github.com/antillas21/ajax-datatables-rails)。だから私はこのクエリのすべてのレコードが必要です –
私の推測では、あまりにも多くのユニークな電子メールがあります。あなたは本当にここでグループを使用する必要がありますか?多分あなたは何が必要ですか? –