Sebastian Goertz: JOIN-Abfrage optimieren

Beitrag lesen

Hallo,

moin,

Ich wies Dich darauf hin, dass Du Dir den Ausführungsplan besorgen solltest. Dieser zeigt Dir an, ob eine LIMIT-Optimierung stattfindet.

Was dies angeht, werde ich meine Hausaufgaben machen und mir das/die Kapitel zu Gemüte führen, sobald ich die Ruhe und Muße dazu finde. Unabhängig davon scheinen sich aber noch andere Punkte gezeigt haben (oder irre ich da?):

ich glaube, es ist noch zu früh über tuning zu sprechen, wenn die fachlickeiten noch unklar sind und das sind sie für mich noch. grnudsätzlich gilt zu klären, wie die user datensätze zu mappen sind, für die es keine plz in der geodatenbank gibt. und selbst dort stellt sich mir noch die frage, ob es nur einen datensatz dafür zurück gibt oder sogar mehrfach die gleiche plz in der geodaten tabelle stehen kann (gibt es auf der plz in der geodatenbank einen unique index ?).

Die Abfrage mit den "IF (@..", welche ich erstellt hatte, liefert mir exakt das Ergebnis, welches ich gern hätte. Nämlich:

  1. Die Koordinaten, welche zu genau der plz gehören, die der user hat
  2. Die Koordinaten zu der 4stellig übergeordneten plz, falls 1) nicht existiert
  3. ...
  4. ...
  5. Die Koordinaten zu der 1stellig übergeordneten plz, falls 4) nicht existiert
  6. null, falls 5) nicht existiert bzw. der user keine plz angegeben hat

Rahmenbedingungen:

  • unique index auf geodata.plz [char(5)]
  • es existieren alle 1stelligen übergeordneten plz 0..9
  • user.plz ist nicht NULL sondern '' oder eben bis zu 5 ziffern

Bemerkung:
Ich sehe bei dieser Aufstellung direkt ein, dass 6) an erster Stelle gehört, also zunächst geprüft werden soll, ob der user überhaupt eine plz hat oder plz='' ist. Ändert aber mein Problem noch nicht, dass die Abfrage zu lang dauert, sobald user.plz nicht unmittelbar seinen Pendant in geodata.plz hat.

auf jeden fall ist der ansatz mit dem SUBSTRING nicht vollstänig zu ende gedacht, weil man dort auf jeden fall mehrere geodatensätze für einen user datensatz zurück bekommen kann und somit auch unterschiedliche geodaten.

Wieso? Mit den IF-Anweisungen bekomme ich nur ein Ergebnis, weil der jeweils folgende SUBSTR... nur ausgeführt wird, wenn bisher noch nichts gefunden wurde.

-----

Vereinbarung meinerseits:
Wenn ich die Sache in den Griff bekommen sollte, nachdem ich meine oben genannten Hausaufgaben gemacht habe, dann können wir Thematik hier vorerst beenden. Dafür ist mir eure Zeit zu kostbar.
Gibt es aber tatsächlich noch andere Knackpunkte, die mir das Kapitel OPTIMIZATION nicht löst, bin ich für jeden Hinweis dankbar :-)

Viele Grüße,
Sebastian