一般に、選択フィルターはuser_idのインデックスを使用できます またはactivity_type_id または両方(いずれかの順序で)。
注文操作では、created_atでフィルターを使用できる場合があります 。
このクエリでは、(user_id, activity_type_id)の複合インデックスである可能性があります。 MySQLが実際にそれを利用できると仮定すると、最良の結果が得られます。それができない場合は、user_idにインデックスを付ける方がよいでしょう。 activity_type_idより 選択性が向上する可能性が高いためです。それを考える理由の1つは、activity_type_idのインデックスを使用する場合、スキャンするインデックスのサブセクションが4つあるということです。 、user_idのインデックスを使用する場合にスキャンする1つのサブセクションと比較 一人で。
ソート順のインデックスに依存しようとすると、全表スキャンを意味する可能性が高いため、有益である可能性は低くなります。 created_atにインデックスを作成しません このクエリをサポートするため。有益な他のクエリがあるかもしれません。