一般に、選択フィルターは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
にインデックスを作成しません このクエリをサポートするため。有益な他のクエリがあるかもしれません。