SQL: Ist es effizient, tinyint anstelle von Integer zu verwenden, wenn mein maximaler Wert 255 ist?

8

Nehmen wir an, ich möchte die Anzahl der Datagrid-Zeilen speichern, die max. 24 weil jede Zeile 1 Stunde ist.

Um den Zeilenindex in der Datenbank zu speichern, wäre ein Tinyint-Feld völlig ausreichend. Aber zurück in meinem Gedächtnis erinnere ich mich leicht, dass Datenbanken für Ganzzahlen optimiert sind?!

Also lohnt es sich, Tinyint zu verwenden?

    
msfanboy 07.07.2010, 17:54
quelle

4 Antworten

9

Mit einer engeren Tabelle passt die Datenbank mehr Datensätze in eine einzelne IO-Seite und erfordert daher weniger Festplattenlesevorgänge.

Als Faustregel gilt immer der Datentyp, der die geringste Speichergröße benötigt.

    
Daniel Vassallo 07.07.2010, 17:58
quelle
3

Im Allgemeinen gilt: Je weniger Platz, desto besser. Je mehr Zeilen auf einer 8k-I / O-Signallebene auf dem Datenträger (oder im Speicher) Platz finden, desto weniger I / Os müssen Daten suchen und / oder abrufen ist besonders wichtig für Spalten, die in Indizes verwendet werden. Wenn Ihre Maschine jedoch beispielsweise eine 32-Bit-Maschine ist und ein 32-Bit-Betriebssystem ausführt, beträgt der kleinste Speicherbereich, der unabhängig adressiert werden kann, 32 Bit. Wenn dies also die einzige Spalte in Ihrem Tabellenschema ist, ist diese kleiner als 32 Bits, dann spielt es keine Rolle, da jede vollständige Datenzeile an einer 32-Bit-Grenze beginnen und enden muss, so dass jede Zeile ein Vielfaches von 32 Bits breit sein muss.

d. h., wenn Ihr Tisch

war

MeineTabelle (ColA Tinyint, ColB Int, ColC DateTime)   Dann nimmt jede Reihe 16 Bytes (128 Bits) und 24 Bits werden verschwendet.

Auf der anderen Seite, wenn Sie 4 Spalten haben, die tinyInts sein könnten, dann verwenden Sie auf jeden Fall, dass SQL Server vier von ihnen in einen 32-Bit-Speicherort auf der Festplatte legt (egal in welcher Reihenfolge Sie sie deklarieren).

Die gleichen Prinzipien gelten für 64-Bit-SQL-Server, der auf 64-Bit-Betriebssystem / CPUbB ausgeführt wird.

    
Charles Bretana 07.07.2010 18:11
quelle
2

Tinyint

weniger Platz ist gut.

    
whoa 07.07.2010 17:56
quelle
2

Tinyint ist eine Ganzzahl, und es wäre schneller als INT, weil TINYINT weniger Bytes (1 Byte) als der INT-Datentyp (4 Byte) benötigt.

Referenz:

OMG Ponies 07.07.2010 17:58
quelle