Index-Geheimnisse

Indizes und der richtige Umgang mit ihnen sind im Datenbankumfeld ein beliebtes Thema. Es stecken allerdings sehr viele interne Kenntnisse des DBMS hinter der optimalen Nutzung von Indizes. Wer sich bereits intensiv mit dem Einsatz von Indizes beschäftigt hat, dem möchte ich hier noch einige DB-Interna nennen, die bestimmt helfen werden, den Index-Einsatz noch weiter…

Vom Kleinen aufs Große schließen

Jede Operation in MySQL (wie überall anders auch) kostet etwas Zeit. In der Praxis ist die Antwortzeit eines der wichtigsten Kriterien für Software. Um so mehr sollte man schauen, dass man die Abfragen optimiert, wo es nur geht. Wenn die Tabellen ihrer Datenbank normalisiert sind, benötigt man für eine Abfrage oft Joins. Oft benötigt man…

Nested Sets – Hierarchische Strukturen und Bäume in MySQL

Wir haben bereits gesehen, dass das rekursive Abfragen eines Baumes, der über Parent-IDs verwirklicht wurde, sehr langsam ist. Dieses Problem soll nun umgangen werden, damit wir mit nur einer SELECT-Abfrage und ohne jegliche Rekursion (auch kein connect by prior, wie es in Oracle möglich ist) alle Datensätze und die dazugehörigen Ebenen erhalten. Das Modell der…

Hierarchische Strukturen und Bäume in MySQL (Rekursion)

Hierarchische Strukturen werden in Datenbanken oft mithilfe einer parentID umgesetzt. Man hat zu jedem Eintrag einen übergeordneten Eintrag, außer beim Wurzelelement. Diese parentID kommt zum Einsatz, da es sich laut ERM um eine Relation – besser 1:1-Beziehung – eines Eintrages der Tabelle mit einem anderen Eintrag der gleichen Tabelle handelt. Da sich solche mathematischen Sachverhalte…

COUNT(*) gegen COUNT(spalte)

Immer wieder benötigt man in SQL-Abfragen die Anzahl der zurückgegebenen Datensätze. Dazu dient die SQL-Funktion COUNT(). Als Argument nimmt diese Funktion entweder ein ‚*‘ oder eine bestimmte Spalte. Im MySQL Performance Blog wird verglichen, ob man dabei COUNT(*) oder COUNT(spalte) verwenden sollte. COUNT(*) greift auf den internen Cache von MySQL zurück und kann deshalb recht…

Indizes richtig einsetzen

Datenbanken: Schlüssel und Indizes Ziel und Zweck Das Wesen von Indizes Primärschlüssel Unique-Schlüssel Index-Schlüssel Fremdschlüssel Fulltext-Schlüssel Welche Indizes sollen nun gesetzt werden Für Fortgeschrittene: Die Reihenfolge der Spalten im Index Ziel und Zweck Schlüssel und Indizes (beide Wörter sind im Falle von Datenbanken gleichbedeutend) sind elementare Bestandteile einer Datenbank. Aus Geschwindigkeitsgründen aber auch aus Gründen…