sql >> Base de Datos >  >> RDS >> Mysql

¿Qué se debe indexar para mejorar el rendimiento?

En general, los filtros de selección pueden usar índices en user_id o activity_type_id o ambos (en cualquier orden).

La operación de pedido podría usar un filtro en created_at .

Es probable que para esta consulta, un índice compuesto en (user_id, activity_type_id) daría el mejor resultado, suponiendo que MySQL realmente pueda usarlo. De lo contrario, es probable que sea mejor indexar user_id que activity_type_id porque es probable que proporcione una mejor selectividad. Una razón para pensar eso es que habría 4 subsecciones del índice para escanear si usa un índice en activity_type_id , en comparación con solo una subsección para escanear si usa un índice en user_id solo.

Es probable que tratar de confiar en un índice para el orden de clasificación signifique un escaneo completo de la tabla, por lo que es menos probable que sea beneficioso. No crearía un índice en created_at para apoyar esta consulta; puede haber otras consultas en las que sería beneficioso.