Sebastian Goertz: JOIN-Abfrage optimieren

Beitrag lesen

Hallo,

zum einen musst man sich bewußt sein, dass in einigen DBMS ein leerstring mit '' nicht NULL entspricht. zum anderen selbst für den leerstring willst du keinen OUTER JOIN, es ist wenn überhaupt ein INNER JOIN und eventuell läßt es sich anders als mit einem JOIN lösen. aber vergiss mal den ansatz mit dem LEFT JOIN.

Bin ich denn jetzt vollkommen auf dem Holzweg? Ein INNER JOIN liefert mir doch nur die Datensätze, zu denen auch entsprechende Ergebnisse aus dem JOIN gefunden werden. In meinem Fall würden also nur die Datensätze ausgegeben, zu deren plz auch koordinaten aufzufinden sind.
Aber ich möchte doch alle datensätze ausgeben, selbst wenn plz='' und somit keine koordinaten zu finden sind.

das andere problem, dass du hast ist, du musst dir gedanken machen, was du als alternativ wert anzeigen willst. größer oder gleich reicht nämlich nicht für alle fälle aus. stell dir mal vor die geodatenbank ist leer oder aber es gibt keinen größeren alternativ wert als die gesuchte plz, zumal man immer im kopf haben sollte, dass plz keine zahl, sondern ein string ist.

Bedenke bitte meinen neuen Ansatz mit SUBSTR. Spätestens die einstelligen Werte sind in der Tabelle (also 0..9).

SELECT * FROM user ORDER BY eigenschaft DESC LIMIT 0,15
bei diesem ansatz muss das dbms alle datensätze der user tabelle durchgehen, um letztlich nur 15 datensätze zu bekommen.

Ging bisher davon aus, dass die Abfrage nach 15 Ergebnissen dann abbricht. Wozu ist dann das LIMIT gut...
Gibt es bessere/geeignetere Abfragen?

Viele Grüße,
Sebastian