Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O que deve ser indexado para melhorar o desempenho?


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.