Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL &verschachtelte Menge:langsamer JOIN (Index wird nicht verwendet)

Ah, ist mir gerade eingefallen.

Da Sie nach allem in der Tabelle fragen, entscheidet sich mysql stattdessen für einen vollständigen Tabellenscan, da es dies für effizienter hält.

Um eine Schlüsselverwendung zu erhalten, fügen Sie einige Filter hinzu, um die Suche nach jeder Zeile in allen Tabellen ohnehin einzuschränken.

Antwort aktualisieren:

Ihre zweite Abfrage ergibt keinen Sinn. Sie bleiben mit lca verbunden, haben aber einen Filter darin, der die linke Verbindung von selbst negiert. Außerdem suchen Sie im letzten Schritt der Abfrage nach Daten, was bedeutet, dass Sie alle lt, lc und lca durchsuchen müssen, um Ihre Daten zu finden. Außerdem haben Sie keinen Index mit der ganz linken Spalte „Typ“ für Standorte, sodass Sie immer noch einen vollständigen Tabellenscan benötigen, um Ihre Daten zu finden.

Wenn Sie einige Beispieldaten und ein Beispiel dafür hätten, was Sie erreichen möchten, wäre es vielleicht einfacher zu helfen.