Secara umum, filter pemilihan dapat menggunakan indeks pada user_id atau activity_type_id atau keduanya (dalam salah satu urutan).
Operasi pemesanan mungkin dapat menggunakan filter pada created_at .
Kemungkinan untuk kueri ini, indeks gabungan pada (user_id, activity_type_id) akan memberikan hasil terbaik, dengan asumsi bahwa MySQL benar-benar dapat memanfaatkannya. Jika gagal, kemungkinan lebih baik untuk mengindeks user_id dari activity_type_id karena kemungkinan akan memberikan selektivitas yang lebih baik. Salah satu alasan untuk berpikir bahwa akan ada 4 subbagian indeks untuk dipindai jika menggunakan indeks pada activity_type_id , dibandingkan dengan hanya satu subbagian untuk dipindai jika menggunakan indeks pada user_id sendirian.
Mencoba mengandalkan indeks untuk urutan pengurutan kemungkinan berarti pemindaian tabel penuh, jadi kemungkinan kecil itu bermanfaat. Saya tidak akan membuat indeks di created_at untuk mendukung permintaan ini; mungkin ada pertanyaan lain yang bermanfaat.