Sebastian Goertz: JOIN-Abfrage optimieren

Beitrag lesen

Hallo,

dann trifft doch die vierstellige plz 1234 auf mehr als einen datensatz in der geo tabelle oder sehe ich jetzt was verkehrt ? gib mal beispiel, damit ich mir ein bild davon machen kann.

Aaaah, das "Missverständnis" liegt bei meiner Wortwahl bzgl. der übergeordneten PLZ. In der geodata finden sich plz wie:

  1. alle regulär vergebenen 5stelligen PLZ
  2. 4stellige "Durchschnitts-PLZ", sofern es damit beginnende 1) gibt
  3. 3stellige ..., sofern es ... 2) gibt
  4. 2stellige ..., sofern es ... 3) gibt
  5. 1stellige ..., sofern es ... 4) gibt

Aus 1) bis 4) folgt, dass die Werte '0', '1', ..., '9' in der Tabelle als Werte für plz enthalten sind.

Beispiele dafür:
zu 1) 01067, 10115, 10117, 10119 existieren in geodata.plz
zu 1) 01030, 01031, ..., 01039 existieren nicht in geodata.plz

zu 2) 0106, 1011 existieren / 0103 existiert nicht
zu 3) 010, 101 existieren (hier fünde 01038 sein Pendant 010)
zu 4) 01, 10
zu 5) 0, 1

  • unique index auf geodata.plz [char(5)]
    und das sagt mir, dass es nur 5 stellige plz in der geo tabelle gibt.

Wäre hier varchar(5) angebrachter?
Als Integer speichern kommt nicht in Frage, da es zu Fehlern käme: PLZ '01067' würde genauso gespeichert wie '1067' (=1067*)

Viele Grüße,
Sebastian