Ich fange an, Ausführungspläne zu lernen und bin verwirrt darüber, wie genau ein Hash-Match funktioniert und warum es in einem einfachen Join verwendet wird:
select Posts.Title, Users.DisplayName
From Posts JOIN Users on
Posts.OwnerUserId = Users.Id
OPTION (MAXDOP 1)
Soweit ich weiß, werden die Ergebnisse des Top-Index-Scans zum Hash und jede Zeile im unteren Index-Cluster-Scan wird nachgeschlagen. Ich verstehe, wie Hash-Tabellen zumindest zu einem gewissen Grad funktionieren, bin jedoch verwirrt darüber, welche Werte in einem Beispiel wie diesem genau gehasht werden.
Was für mich Sinn machen würde, ist das gemeinsame Feld zwischen ihnen, die ID, ist gehasht - aber wenn dies der Fall ist, warum ist eine Zahl gehasht?