Sie sind hier : sebastian1012.bplaced.net/ homepage-neu / kreuz-und-quer / tutorials-info-neuigkeiten-datenbank / datentypen-so-klein-wie-moeglich-so-gross-wie-noetig.php

Datentypen: So klein wie möglich, so groß wie nötig

Jede Spalte in einer Tabelle hat einen Datentyp. Einige sind untereinander kompatibel, andere weniger. Um sämtliche Prozesse der Datenbank zu beschleunigen, ist es ratsam die Datentypen clever zu wählen und nicht „frei Schnauze“ einfach bei allen Ganzzahlen BIGINT zu nehmen, denn „das wird schon funktionieren“. Sicherlich funktionierts – nur zu welchem Preis?

Für eine optimale Wahl der Datentypen sollte man die Wertebereiche, die sie jeweils abdecken, entweder im Kopf haben oder wissen, wo sie stehen. Eine allgemeine Empfehlung, wleche Datentypen gut und welche b öse sind, kann es natürlich nicht geben, denn alle haben für bestimmte Anwendungsbereiche ihre Berechtigung.
Wenn allerdings jemand die ID in einer Kategorientabelle als BIGINT definiert, ist das nicht dem Anwendungsbereich entsprechend (es sei denn, man erwartet 2^63 Kategorien, was recht unwahrscheinlich ist). Deshalb immer die Überschrift dieses Artikels im Auge behalten: Der Datentyp sollte so klein wie möglich gewählt werden (möglichst kleiner Wertebreich), aber natürlich so groß wie nötig (niemandem ist geholfen, wenn in einem Online-Shop der Artikelname nur 10 Zeichen haben darf).

Folgende Regeln gelten aber immer und helfen bei der Wahl des „richtigen“ Datentyps:

Nun sind die Datentypen also optimiert. des Weiteren sollte man darauf achten, möglichst viele Spalten als NOT NULL zu definieren, denn NULL-Werte sind besonders bei COUNT(*) und Joins immer eine Bremse. Prüfen sie aber vorher Ihre Anwendung, was passiert, wenn beispielsweise bei INT-Feldern plötzlich statt dem NULL eine 0 drinsteht.

Und ganz wichtig: Wenn Tabellen normalisiert werden, wird in der einen ein Primärschlüssel festgelegt und in der „Partnertabelle“ ein Fremdschlüssel, der auf den Primärschlüssel veweist. Diese sollten unbedingt den gleichen Datentyp haben, da sonst der Index nicht angewendet werden kann zum Joinen.