Das ganze läuft ca. 10 Minuten da in der Tabelle 2 wirklich viele Datensätze liegt.
Wieviel sind denn "wirklich viele" und wie wenig sind in Tabelle 1 (inkl. der Where Bedingungen?)
Bezüglich der "Indexe überall", viel hilft nicht unbedingt viel. "Storno is null " bringt mit Index eher keine zusätzliche Performance. An solchen Stellen (vermuteter Charakter eines Feldes, das Storno genannt wird) bietet sich die Arbeit mit expliziten Werten an. Also 0/1, True/false oder sowas. Vorbelegung durch "Default" Angabe auf Feldebene der Tabellendefinition und "not null" Constraint. Das garantiert, dass immer Werte vorhanden sind, die dann auch indiziert werden können. Gegenanzeige dazu ist leider wieder, dass ein normaler Index mit lediglich einer Handvoll unterschiedlicher Werte nicht sehr viel bringt.