2つのクエリの実行速度を調べるのは難しいですが、1つのクエリでタイムアウトが発生したため、分析とベンチマークを説明できますが、このクエリが原因であるかどうかはわかりません。レール内のActiveRecordカウントの分析
queue_count = purchase.purchase_items.where("queue_id = ?", queue.id).count
同じSQLクエリ
SELECT COUNT(*) FROM "purchase_items" WHERE "purchase_items"."purchase_id" = 1241422 AND (queue_id = 3479783)
はそう私は私がこの
queue_count = purchase.purchase_items.where("queue_id = ?", queue.id).all.count
のようなクエリを持って、アレイ内のすべてのレコードを取得し、その後、カウントを行うための一つの解を得た後、カウントを削除する必要があります
同じSQLクエリ
SELECT "purchase_items".* FROM "purchase_items" WHERE "purchase_items"."purchase_id" = 1241422 AND (queue_id = 3479783)
は、クエリ分析とベンチマークで確認していたときに最終的に若干のバリエーションを得ました。これが正しい方法でしたか?または私は間違って何かをしていますか?
私はすでにこのインデックスを持っていますが、分析するともう1つ説明します。この最初のヒットでこのクエリが表示されるpurchase_id = 1241422 AND(queue_id = 3479783)実行時の選択SELECT COUNT(*)from purchase_items実行時間:これは0.148ミリ秒を示しています。何度もチェックするロジックがありますか、最初のヒットの実行時間は正しいですか? – django
これを数回実行してf.eを計算する必要があります。平均 - 1回の試行では正確なデータを得るには不十分です。そして、それが1ミリ秒または0.1ミリ秒であれば、それは本当に速く、確かにボトルネックではありません – Esse