
Wenn die Datenbankabfrage mal wieder länger dauert…
Foto: Pressmaster | shutterstock.com
Datenbankentwickler haben es nicht leicht, ganz egal, ob sie SQL Server, Oracle, DB2, MySQL, PostgreSQL oder SQLite verwenden. Immerhin sind die Herausforderungen ähnlich. Insbesondere schlecht geschriebene Abfragen können eigentlich -, beziehungsweise darauf ausgelegt, die Daten abzurufen, die für einen bestimmten Task nötig sind. Wenn Sie eine Abfrage wiederverwenden, die für die meisten Ihrer Use Cases geeignet ist, mag das zunächst von außen betrachtet ganz gut funktionieren. Es kann jedoch sein, dass “unter der Haube” zu viele Daten abgefragt werden, was zu Lasten von Performance und Ressourcen geht – sich aber erst dann bemerkbar macht, wenn skaliert werden soll.
Empfehlung: Prüfen Sie Queries, die wiederverwendet werden sollen, und passen Sie diese an den jeweiligen Anwendungsfall an.
2. Views verschachteln
) sind Zufallszahlen und dienen dazu, Objekten eine eindeutige Kennung zuzuweisen. Diverse Datenbanken unterstützen dieses Schema als nativen Spaltentyp. GUIDs sollten allerdings nicht verwendet werden, um die Zeilen, in denen sie enthalten sind, zu clustern. Da es sich um Zufallszahlen handelt, führt das dazu, dass die Tabelle durch das Clustering stark fragmentiert wird. Das kann wiederum dazu führen, dass Tabellenoperationen um mehrere Größenordnungen langsamer laufen.
Empfehlung: Clustern Sie nicht auf Spalten mit hohem Randomness-Anteil. Beschränken Sie sich auf Datums- oder ID-Spalten – das funktioniert am besten.
5. Zeilen ineffizient zählen
Um zu bestimmen, ob bestimmte Daten innerhalb einer Tabelle existieren, sind Befehle wie SELECT COUNT(ID) FROM table1 oft ineffizient. Einige Datenbanken sind zwar in der Lage, SELECT COUNT()-Operationen intelligent zu optimieren, aber eben nicht alle. Der bessere Ansatz (wenn Ihr SQL-Dialekt das unterstützt):
IF EXISTS (SELECT 1 from table1 LIMIT 1) BEGIN ... END
Empfehlung: Wenn es Ihnen um die Anzahl der Zeilen geht, können Sie auch eine entsprechende Statistiken aus der Systemtabelle abrufen. Einige Datenbankanbieter ermöglichen auch spezielle Queries: In MySQL können Sie mit SHOW TABLE STATUS beispielsweise Statistiken über alle Tabellen einholen – einschließlich der Zeilenzahl.
6. Trigger falsch nutzen
bei unserer Schwesterpublikation Infoworld.com erschienen.
SOCIAL SHARE CARD GENERATOR