tipos - optimizar indices mysql
¿Cómo forzar un índice en tablas unidas internas? (2)
¿Cómo fuerzo los índices en una consulta similar a esto? Necesito forzar un índice en foo y barra individualmente.
SELECT foo.*, bar.*
FROM foo
INNER JOIN bar ON foo.rel_id = bar.rel_id
WHERE foo.status = 1
AND bar.status = 1
Lo obvio sería crear un índice de cobertura en rel_id
y el status
de ambas tablas para satisfacer la unión y el requisito de dónde.
¿Qué has intentado hasta ahora?
editar
Usted proporciona sugerencias de índice, pero el quid de las respuestas de todos parece ser que no debería tener que hacerlo.
A partir de MySQL 4.0.9, también puede usar FORCE INDEX, que actúa como USE INDEX (index_list), pero con la adición de que se supone que una exploración de la tabla es muy costosa. En otras palabras, una exploración de tabla se usa solo si no hay manera de usar uno de los índices dados para encontrar filas en la tabla.
Suponiendo que el índice a existe en foo y el índice b en la barra:
SELECT foo.*, bar.*
FROM foo FORCE INDEX (a)
INNER JOIN bar FORCE INDEX (b) ON foo.rel_id = bar.rel_id
WHERE foo.status = 1
AND bar.status = 1
forzaría la selección del índice en MySql