2009-08-13 2 views
13

Использование «FORCE/USE/IGNORE INDEX» при прямом выборе хорошо документировано, но из документации не ясно, как сделайте это для ПРИСОЕДИНЕНИЯ.Что такое синтаксис принудительного использования индекса для соединения в MySQL

Как принудительно использовать конкретный индекс для объединенной таблицы?

+1

Вы только что задали вопрос и ответили на него вторым человеком после 1 минуты? (Я знаю, я знаю, что это уже 6 лет, мне просто интересно) – karatedog

+0

@karatedog: Да, я потратил годы, пытаясь найти ответ, поэтому хотел где-то его документировать. Думал, что здесь будет полезно. – Drarok

ответ

29

FORCE/USE/IGNORE отправляется после имени таблицы, с которой вы соединяетесь, и после псевдонима, если вы используете его.

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

насчет ВЫБРАТЬ t1.'id' AS 'id_1', t2.'id' AS' id_2' FROM ' table1' t1 LEFT JOIN ' table2' t2 GROUP BY и принуждать индекс использования для группы ? – Crusader

+1

Документация (которую бесконечно легче найти в эти дни) действительно показывает все доступные варианты: http://dev.mysql.com/doc/refman/5.6/en/index-hints.html – Drarok

Смежные вопросы