join vs subselect

Vor einigen Jahren habe ich für den Mssql-Server herausgefunden, dass Abfragen mit “join” mehr als 100 mal schneller sein können als die gleich Abfrage in Form eines Subselects. Stimmt das auch heute für MySQL? Folgendes zeigt, dass es nicht zwingend so ist.

Frage: Welche Postleitzahlen gibt es sowohl in Deutschland als auch in den USA?

Stationen auf dem Weg zur Antwort:

  • Quelle von PLZ-dumps
    http://www.tutorials.de/relationale-datenbanksysteme/229059-postleitzahlen-mysql-dump.html
    => Einspielen in die Tabelle ‘orte’.

  • Quelle US Zip-Codes
    http://federalgovernmentzipcodes.us/free-zipcode-database.csv
    aufbereiten mit
    cut -d “,” -f2,4 free-zipcode-database.csv > free-zipcode-database-zip-city-only.csv
    Ergänzung für einen brauchbaren MySQL-Dump überlasse ich dem geneigten Publikum.
    => Einspielen in die Tabelle ‘orteus’.

  • SQL-Befehle übersichtlich strukturiert. Sie werden unten als 1-Zeiler benutzt:

    Copy&Paste aus dem mysql-Client:

    Ergebnis: Für ca. 44000×81000 ist fast kein Unterschied auszumachen.
    Ich bin angenehm überrascht. Einschränkung der Gültigkeit der Erkenntnis: Die Datenmenge im obigen Beispiel ist nicht gross. Damals bei Mssql ging es um ungefähr 12000×625000, also Faktor 0,5 aber immerhin diesselbe Grössenordnung.

  • Dieser Beitrag wurde unter Allgemein abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.