Hamstar: JOIN-Query sehr langsam

Beitrag lesen

SELECT
 *,                             -- Würg, immer Datenfeldnamen angeben!
 berater.id as id,              -- Würg, warum?
 staedte.id as stadt_id         -- Würg, warum? Schreckliche Namensgebung!
FROM
 berater
LEFT JOIN
 staedte ON ((plz_von <= berater.plz) and (plz_bis >=berater.plz))
-- Würg, schrecklicher JOIN!

Du hast also die beiden Tabellen 'berater' und 'staedte' und wünscht eine Liste aller Städte und zugeordneter Berater.

Dir fällt vielleicht auf, dass dafür ein "Lauf" erforderlich ist, dass also kein Index und so vorhanden ist?

Warum? - Weil die Zuordnung "Städte->Berater" nicht im Datendesign hinterlegt ist und jeweils beim SELECT errechnet wird.

Also, schreib eine kleine Routine und befülle das neu zu erstellende Datenfeld 'Stadt_Berater_ID'. Diese ist immer auszuführen, wenn die Zuordnung "Städte->Berater" geändert wird.

Hast Du das gemacht, dann funzt es auch ganz performant mit dem SELECT.