Gibt es einen Vorteil auf Einstellung Tinyint Felder, wenn ich weiß, dass der Wert nicht 255 überschreiten wird?

StackOverflow https://stackoverflow.com/questions/1628551

Frage

Sollte ich die kleinste Datentyp möglich ist, oder wenn ich den Wert 1 zum Beispiel bin speichern, spielt es keine Rolle, was der Spalte Datentyp ist und der Wert wird auf die gleiche Speichergröße besetzen?

Die Frage ist auch, denn ich werde immer es konvertieren müssen und in der Anwendung rumspielen.


UPDATE

Ich denke, dass varchar (1) und varchar (50) ist die gleiche Speichergröße, wenn der Wert „a“, dachte ich, es ist das gleiche mit int und Tinyint nach den Antworten, die ich es nicht verstehen, oder?

War es hilfreich?

Lösung

Wählen Sie immer den kleinsten Datentyp möglich. SQL kann nicht erraten, was Sie der Maximalwert sein wollen, aber es kann die Lagerung und die Leistung optimieren, wenn Sie es der Datentyp sagen.


Zur Beantwortung Ihrer Update:

varchar in Anspruch nimmt nur so viel Platz wie Sie verwenden, und so haben Sie Recht, wenn Sie sagen, dass das Zeichen „a“ bis 1 Byte (lateinisch-Codierung) nehmen, egal wie groß ein varchar Feld, das Sie wählen. Das ist nicht der Fall bei jeder anderen Art von Feld in SQL.

Sie werden jedoch wahrscheinlich Effizienz für Raum opfern, wenn Sie alles, was ein varchar Feld machen. Wenn alles, was eine feste Größe Feld ist, dann kann eine einfache SQL-Konstante Zeit Multiplikation tun, um Ihren Wert zu finden (wie ein Array). Wenn Sie varchar Felder drin haben, dann ist der einzige Weg, um herauszufinden, wo man Daten, die er gespeichert ist, über alle bisherigen Felder gehen (wie eine verknüpfte Liste).

Wenn Sie SQL fangen dann rate ich von varchar Feldern nur fern zu bleiben, es sei denn Sie erwarten Felder zu haben, die manchmal sehr geringe Mengen an Text und manchmal sehr große Mengen von Text (wie Blog-Posts). Es braucht Erfahrung zu wissen, wann man die beste Wirkung Felder variabler Länge zu verwenden, und auch ich nicht die meiste Zeit kennen.

Andere Tipps

Es ist eine Leistung Berücksichtigung insbesondere auf das Design Ihres Systems. Im Allgemeinen können die mehr Daten Sie in eine Seite von SQL Server-Daten passen, desto besser die Leistung.

Eine Seite in SQL Server 8k. Mit winzigen Ints statt Ints ermöglicht es Ihnen, mehr Daten in eine einzelne Seite zu setzen, aber Sie haben zu prüfen, ob oder nicht, es ist es wert. Wenn Sie vorhaben, Tausende von Treffern eine Minute serviert werden, dann ja. Wenn dies ein Hobby-Projekt oder etwas ist, das nur ein paar Dutzend Benutzer je sehen werden, dann spielt es keine Rolle.

Der Vorteil ist es aber vielleicht nicht von Bedeutung sein, wenn Sie viele Zeilen und führen los Betrieb. Es wird Performance-Verbesserung und kleinere Speicher sein.

Kultur jedes Bit auf der Seitengröße gespeichert ein wenig Geschwindigkeit Verbesserung bedeuten würde: schmalere Reihen bedeuten mehr Zeilen pro Seite, die weniger Speichermittel verbraucht und weniger IO-Anforderungen, in einem höheren Geschwindigkeit zur Folge hat. Doch mit SQL Server 2008 Seite Kompression Dinge beginnen Fuzzy zu bekommen. Der Kompressionsalgorithmus kann komprimiert 4 Byte Ints mit Werten unter 255 auf noch weniger als ein Byte.

Zeilenkomprimierung werden Algorithmen speichern ein 4-Byte-int auf einem einzelnes Byte für Werte unter 127 (int signiert), 2 Bytes für die Werte unter 32768 und so weiter und so fort.

Angesichts der Tatsache, dass die schönen Komprimierungsfunktionen auf Enterprise Edition Servern verfügbar sind, macht es Sinn, die Gewohnheit zu halten von dem kleinstmögliche Datentyp verwendet wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top