Teil 3: MySQL 4 - Optimierung von Anfragen

SQL-Optimierung: Tabellen und Spalten anpassen

Legen Sie Ihre Daten in einer BLOB-Spalte ab

Wenn Sie ein BLOB verwenden, um Daten zu speichern, die Sie in Ihrer Anwendung packen bzw. entpacken, dann können Sie möglicherweise alles mit einer einzigen Suchoperation (statt mit mehreren) ermitteln. Das kann auch sinnvoll für Daten sein, die in einer Standardtabellenstruktur nicht einfach darzustellen sind oder sich mit der Zeit ändern. In der Beschreibung der Anweisung ALTER TABLE in einem anderen Kapitel des Buches ging es in einem Beispiel um eine Tabelle, die Ergebnisse aus den Feldern eines webbasierten Fragebogens aufnahm. In diesem Beispiel wurde gezeigt, wie der Tabelle mit ALTER TABLE Spalten hinzugefügt werden, wenn Sie die Umfrage um eine Frage ergänzen.

Ein anderer Ansatz zur Lösung dieses Problems bestünde darin, es dem Anwendungsprogramm zu überlassen, die Daten aus dem Web in irgendeine Datenstruktur zu packen und sie dann in eine einzige BLOB-Spalte einzulesen. So könnten Sie beispielsweise die Ergebnisse der Befragung mithilfe von XML darstellen und den entsprechenden XML-String in der BLOB-Spalte ablegen. Das bedeutet für die Anwendung einen zusätzlichen Aufwand bei der Kodierung der Daten (ebenso wie bei der späteren Dekodierung, wenn sie aus der Tabelle geladen werden), aber die Tabellenstruktur wird dadurch vereinfacht, und man muss sie nicht ändern, wenn der Fragebogen geändert wird.

Andererseits können auch BLOB-Werte Probleme verursachen, insbesondere, wenn Sie sehr viele DELETE- oder UPDATE-Operationen ausführen. Das Löschen eines BLOB kann ein sehr großes Loch in der Tabelle hinterlassen, das später vielleicht mit einem oder mehreren Datensätzen möglicherweise unterschiedlicher Größen gefüllt wird (wie Sie mit solchen Löchern umgehen, beschreibt der vorangegangene Punkt).