access type — como o MySQL localiza as linhas
CONST
★ melhor possível.
Lê exatamente 1 linha,
resolvida antes da execução. Ocorre quando
há filtro em PRIMARY KEY ou índice UNIQUE
com valor literal.
ex: WHERE id = 42
EQ_REF
★ ótimo em JOINs.
Lê exatamente
1 linha por combinação do
JOIN, usando PRIMARY KEY ou UNIQUE. Melhor
access type possível dentro de um JOIN.
ex: JOIN users ON users.id =
orders.user_id
REF
◆ bom.
Usa índice não-único — pode retornar
várias linhas por busca.
Eficiência depende da cardinalidade do
índice.
ex: WHERE user_id = 42 (índice
comum)
RANGE
⚡ aceitável.
Usa índice mas varre um
intervalo de valores.
Melhor que scan completo, mas lê múltiplas
linhas.
ex: WHERE created_at BETWEEN
'2024-01-01' AND '2024-12-31'
INDEX
✗ ruim.
Full index scan — lê o índice
inteiro sem filtro. Melhor que ALL (lê menos
dados), mas ainda é scan completo.
ex: SELECT id FROM orders ORDER BY id
(sem WHERE)
ALL
✗ pior caso.
Full table scan — lê
todas as linhas sem usar
nenhum índice. Crítico em tabelas grandes ou
dentro de JOINs.
ex: WHERE notes LIKE '%urgente%' (sem
índice)
cost bar — custo relativo de leitura
tabela mais cara do plano (100%)
proporcional ao custo máximo
A largura é
relativa ao plano atual
— a tabela mais cara sempre ocupa 100%. A cor
segue o access type: verde para tipos
eficientes, amarelo para atenção, vermelho para
scans completos.