SQL: Anleitungen und Praxiswissen | Seite 9 | mironsoft Blog
SQL
-
26.10.2025
Eine Polymorphic Association verspricht eine einzige Kommentar-Tabelle fuer Beitraege, Fotos und Videos gleichzeitig, doch der generische Fremdschluessel dahinter bricht die referentielle Integritaet der Datenbank. Dieser Beitrag zeigt, wie das klassische type-plus-id-Muster entsteht, warum es zu verwaisten Datensaetzen fuehrt, und mit welchen drei Alternativen sich dasselbe Problem loesen laesst, ohne auf Fremdschluessel-Constraints zu verzichten.
-
25.10.2025
Der Query-Optimizer entscheidet nicht anhand des SQL-Textes allein, sondern anhand von Statistiken ueber die Datenverteilung, die mit wachsenden Tabellen veralten koennen. Wer Statistiken und Query-Planer-Cache versteht, erkennt sofort, warum eine unveraenderte Query nach einem Datenwachstum ploetzlich einen anderen, deutlich langsameren Ausfuehrungsplan bekommt.
-
22.10.2025
Wenn ein Reporting-Query Daten aus zwei getrennten Datenbanken zusammenführen muss, greifen viele Teams reflexartig zu einer ETL-Pipeline: Daten aus System A exportieren, nach System B importieren, dann joinen. Foreign Data Wrapper bieten einen direkteren Weg. Sie binden eine externe Datenquelle, egal ob eine andere relationale Datenbank, eine CSV-Datei oder eine REST-API, als virtuelle Tabelle in die eigene Datenbank ein. Aus Sicht des SQL-Optimierers sieht diese Tabelle aus wie jede andere, mit denselben Möglichkeiten für Filterung, Join und Aggregation, allerdings mit anderen Performance-Eigenschaften, die man kennen muss.
-
18.10.2025
Fehlerhafte Geschäftsdaten fallen selten sofort auf, verzerren aber jede darauf aufbauende Analyse. Claude hilft, Validierungsregeln zu definieren, Duplikate zuverlässig zu erkennen, Ausreißer systematisch zu identifizieren und Datenqualitäts-Reports zu automatisieren. Dieser Artikel zeigt den vollständigen Weg von der Problemklasse bis zum eingebauten Quality Gate.
-
15.10.2025
Klassische Tabellen speichern Daten zeilenweise: Jede Zeile liegt physisch zusammenhängend auf der Platte, was einzelne Datensatz-Zugriffe schnell macht. Analytische Abfragen lesen dagegen oft nur wenige Spalten, dafür aber über Millionen Zeilen hinweg, und müssen bei zeilenbasierter Speicherung trotzdem jede komplette Zeile von der Platte holen. Columnstore-Indizes drehen das Speichermodell um, legen Werte spaltenweise ab und erreichen dadurch bei Aggregationen über große Datenmengen einen Geschwindigkeitsgewinn, der mit klassischen B-Baum-Indizes kaum erreichbar ist.
-
14.10.2025
Snapshot Isolation gilt zu Recht als komfortabler Kompromiss: Sie verhindert Dirty Reads, Non-repeatable Reads und die meisten Phantom Reads, ohne den Sperraufwand eines vollständigen Serializable-Levels. Trotzdem lässt sie eine subtile, aber gefährliche Anomalie zu, den sogenannten Write Skew, bei dem zwei Transaktionen unabhängig voneinander konsistent erscheinende Entscheidungen treffen, die zusammen eine Geschäftsregel verletzen. Serializable Snapshot Isolation, kurz SSI, schließt genau dieses letzte Loch. Dieser Artikel erklärt beide Isolationsstufen im Detail und arbeitet ein klassisches Write-Skew-Beispiel Schritt für Schritt durch.
-
11.10.2025
Pessimistic Locking sperrt eine Zeile bereits beim Lesen mit SELECT FOR UPDATE, sodass keine andere Transaktion sie gleichzeitig aendern kann, bis die eigene Transaktion committet oder zurueckrollt. In Kombination mit SKIP LOCKED laesst sich damit eine robuste, parallele Queue-Verarbeitung bauen, waehrend NOWAIT und Lock-Timeouts verhindern, dass Anfragen unbegrenzt lange auf eine gesperrte Zeile warten.
-
08.10.2025
Ein Anti-Join findet alle Zeilen einer Tabelle, die keine passende Zeile in einer zweiten Tabelle haben, ein Semi-Join findet alle Zeilen, die mindestens eine passende Zeile haben, ohne deren Spalten ins Ergebnis zu uebernehmen. Beide Muster loesen ein haeufiges Problem, Kunden ohne Bestellung oder Produkte mit mindestens einer Bewertung zu finden, aber nur eine der gaengigen Umsetzungen ist bei NULL-Werten und Performance wirklich robust.
-
06.10.2025
Sobald eine Geschaeftsoperation Daten mehrerer Microservices mit eigenen Datenbanken aendert, funktioniert eine klassische ACID-Transaktion nicht mehr. Verteilte Transaktionen ueber Services hinweg loesen dieses Problem nicht durch globale Sperren, sondern durch das Saga Pattern: eine Kette lokaler Transaktionen mit definierten Kompensationsschritten fuer den Fehlerfall.
-
01.10.2025
Wie du CSV und XML-Daten effizient in MySQL lädst, mit Staging-Tabellen validierst und entscheidest, wann Magento's ImportExport-Framework besser ist als direktes SQL.