Em geral, os filtros de seleção podem usar índices em
user_id
ou activity_type_id
ou ambos (em qualquer ordem). A operação de pedido pode usar um filtro em
created_at
. É provável que para esta consulta, um índice composto em
(user_id, activity_type_id)
daria o melhor resultado, assumindo que o MySQL pode realmente fazer uso dele. Caso contrário, é provável que seja melhor indexar user_id
do que activity_type_id
porque é susceptível de proporcionar uma melhor seletividade. Uma razão para pensar isso é que haveria 4 subseções do índice para verificar se ele usasse um índice em activity_type_id
, comparado com apenas uma subseção para verificar se usar um índice em user_id
sozinho. Tentar confiar em um índice para a ordem de classificação provavelmente significará uma verificação completa da tabela, portanto, é menos provável que seja benéfico. Eu não criaria um índice em
created_at
para suportar esta consulta; pode haver outras consultas onde seria benéfico.