2017-02-07 4 views
0

Ich versuche, eine links zu verwenden, verbinden Sie zwei Tabellen zu überbrücken und einen Index erzwingen Index, der nur auf der verknüpften Tabelle vorhanden ist, aber ich erhalte den folgenden Fehler:Einzelkraftindex auf verknüpfte Tabelle zu werfen Fehler

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

Hier ist eine Ausgabe der Abfrage ist run (funktioniert gut, wenn ich den FORCE INDEX entfernen):

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 

Jede Idee, warum dies würde scheitern?

+2

https://dev.mysql.com/doc/refman/5.7/en/index-hints.html - * "Es syntaktisch gültig ist wegzulassen index_list für USE INDEX, was "keine Indizes verwenden" bedeutet. Das Auslassen von index_list für FORCE INDEX oder IGNORE INDEX ist ein Syntaxfehler. "* --- *" Der FORCE INDEX-Hinweis verhält sich wie USE INDEX (index_list) mit dem Zusatz, dass a Der Tabellenscan wird als sehr teuer angesehen, dh, ein Tabellenscan wird nur verwendet, wenn es keinen Weg gibt, einen der benannten Indizes zu verwenden, um Zeilen in der Tabelle zu finden. "* –

Antwort

1

Die FORCE INDEX geht nach der Tabellendefinition:

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 ;