2009-08-13 23 views
13

El uso del "FUERTE/USO/IGNORAR ÍNDICE" al hacer una selección directa está bien documentado, pero no está claro en la documentación cómo hazlo para unirte.¿Cuál es la sintaxis para forzar el uso de un índice para una unión en MySQL?

¿Cómo fuerza un índice específico para ser utilizado para una tabla unida?

+1

¿Acaba de hacer una pregunta y la responde en segunda persona, después de 1 minuto? (Lo sé, sé que son 6 años, solo tengo curiosidad) – karatedog

+0

@karatedog: sí, pasé años intentando encontrar la respuesta, así que quería documentarla en alguna parte. Pensé que sería útil aquí. ¿Qué hay de – Drarok

Respuesta

29

El FORCE/USE/IGNORE va detrás del nombre de tabla que se está uniendo, y después del alias si está utilizando uno.

SELECT 
    t1.`id` AS `id_1`, 
    t2.`id` AS `id_2` 
FROM 
    `table1` t1 
LEFT OUTER JOIN 
    `table2` t2 
    FORCE INDEX FOR JOIN (`table1_id`) 
    ON (t2.`table1_id` = t1.`id`) 
+1

SELECT t1.'id' AS 'id_1', t2.'id' AS' id_2' DE 't1 table1' LEFT JOIN' table2' t2 GROUP BY y forzando índice de utilización para el grupo ? – Crusader

+1

La documentación (que es infinitamente más fácil de encontrar en estos días) hace un muy buen trabajo al mostrar todas las opciones disponibles: http://dev.mysql.com/doc/refman/5.6/en/index-hints.html – Drarok

Cuestiones relacionadas