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.