Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: Please explain "EXPLAIN"

1 view
Skip to first unread message

Axel Schwenke

unread,
Aug 28, 2018, 9:16:10 AM8/28/18
to
On 27.08.2018 21:51, Stefan Ram wrote:
> Ich mache ein JOIN einer Fremdschlüsselspalte mit einer
> Primärschlüsselspalte. Beide sollten ein Register (KEY,
> INDEX) haben

Register? Das Dingens heißt Index oder meinetwegen auch Key.

> Laut EXPLAIN könnte die Abfrage das Register
> PRIMARY auch nutzen (Spalte "possible_keys"), tut es aber
> nicht (Spalte "key"). Warum nicht?

Der PRIMARY Index wird nur für die äußere Tabelle als möglicher Index
aufgeführt. Aber da es keine WHERE Bedingung gibt, müssen sowieso /alle/
Rows der äußeren Tabelle gelesen werden. Ein Index bringt da gar nichts.

Für die innere Tabelle (Index: KUNDE) : viel zu wenig Rows. Selbst ohne
JOIN-Buffer würde ein Lookup für eine von 4 Rows keinen Index verwenden.

Außerdem wird ein Block Nested Loop Join gemacht, der bei derart geringen
Datenmengen nur /einmal/ den JOIN-Buffer mit Rows aus der äußeren Tabelle
füllt und dann /einmal/ die Rows der inneren Tabelle gegen die JOIN-Spalte
aus dem Buffer vergleicht.

Guckstu: https://dev.mysql.com/doc/refman/5.7/en/nested-loop-joins.html

0 new messages