Ich bin hier ziemlich ratlos.Index auf einer Tabelle müssen Sie trotzdem vollständig scannen? (MySQL)
Ich habe 2 Tabellen und ich verbinde die erste (etwa 500k Datensätze) mit der zweiten (etwa 2,2 Millionen Datensätze), um herauszufinden, welche Datensätze in der ersten und nicht in der zweiten sind. (typisch "b.attribute is null" Unsinn)
Warum (wie) ist es, dass ein Index auf der ersten Tabelle verwendet wird? Es wird sowieso jeden Datensatz in der ersten Tabelle durchlaufen müssen, und wenn ich versuche, diese Verknüpfung ohne einen Index (oder Primärschlüssel ... keiner benötigt, weil dies alles nur ETL ist) in der ersten Tabelle zu machen, kriecht es.
mit innodb, übrigens.
Hilfe?
EDIT: Die zweite Tabelle ist indiziert. Der erste war nicht.
Beschreiben sagt mir, dass es beide Indizes der Tabelle verwendet. Vielleicht bringt es den Index in Erinnerung statt viel von der Tabelle? Ich bin mir nicht sicher, wie diese Situation gehandhabt wird. daher die Frage. –
@brian, das ist sicherlich möglich. Ein vollständig sequentielles Lesen einer Datei kann extrem schnell sein. Wenn also der Index in zusammenhängendem Speicherplatz auf der Festplatte wäre und nicht zu groß wäre, wäre es sinnvoll, ihn in den Speicher einzulesen. –
In der Tat. Ich sollte beachten, dass NOTHING auf der ersten Tabelle indexiert wurde (kein pk), bevor ich merkte, dass ein Index es viel schneller machte. IE: keine Möglichkeit, etwas über diese Tabelle im zusammenhängenden Speicher zu haben, die leicht in RAM passen würde.Trotzdem würde ich eine konkretere Antwort bevorzugen, wenn jemand in –