2017-02-07 10 views
0

Я пытаюсь использовать левое соединение соединить две таблицы и заставить индексировать индекс, который существует только на присоединяемую таблице, но я получаю следующее сообщение об ошибке:Одноиндексных силы бросала ошибку на присоединяемой таблице

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FORCE INDEX (l.sfdcId) WHERE l.sfdcId = '003A000001eR0HsIAK' ORDER BY a.activity' at line 3

Вот результат запроса запущенной (отлично работает, если я удалю FORCE INDEX):

SELECT a.activityDate,a.primaryAttributeValue,a.attributeDescription,l.firstName,l.lastName,l.title,l.email 
FROM activities AS a LEFT JOIN 
    leads AS l 
    ON a.leadId = l.leadId FORCE INDEX (l.sfdcId) 
WHERE l.sfdcId = '003A000001eR0HsIAK' 
ORDER BY a.activityDate DESC 

Любая идея, почему это потерпит неудачу?

+2

https://dev.mysql.com/doc/refman/5.7/en/index-hints.html - * "Это синтаксически правильным опустить index_list для USE INDEX, что означает «не использовать индексы». Опускание index_list для FORCE INDEX или IGNORE INDEX является синтаксической ошибкой. * * * «Совет FORCE INDEX действует как USE INDEX (index_list), добавив, что сканирование таблицы считается очень дорогостоящим. Другими словами, сканирование таблицы используется только в том случае, если нет способа использовать один из названных индексов для поиска строк в таблице. "* –

ответ

1

FORCE INDEX идет после определения таблицы:

SELECT a.activityDate,a.primaryAttributeValue,a.attributeDescription, 
     l.firstName,l.lastName,l.title,l .email 
FROM activities a LEFT JOIN 
    leads l FORCE INDEX (sfdcId) 
    ON a.leadId = l.leadId 
WHERE l.sfdcId = '003A000001eR0HsIAK' 
ORDER BY a.activityDate DESC ; 

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

  • Нет связанных вопросов^_^