MySQL não está usando índices com a cláusula WHERE I
Estou tentando otimizar algumas das consultas de banco de dados no meu aplicativo Rails e tenho várias que me deixaram perplexo. Todos eles estão usando umIN
noWHERE
todos estão fazendo varreduras completas de tabela, mesmo que um índice apropriado pareça estar em vigo
Por exemplo
SELECT `user_metrics`.* FROM `user_metrics` WHERE (`user_metrics`.user_id IN (N,N,N,N,N,N,N,N,N,N,N,N))
executa uma verificação completa da tabela eEXPLAIN
diz:
select_type: simple
type: all
extra: using where
possible_keys: index_user_metrics_on_user_id (which is an index on the user_id column)
key: (none)
key_length: (none)
ref: (none)
rows: 208
Os índices não são usados quando umIN
instrução @ é usada ou preciso fazer algo diferente? As consultas aqui estão sendo geradas pelo Rails para que eu possa revisitar como meus relacionamentos são definidos, mas pensei em começar com possíveis correções no nível do banco de dados primeir