Hallo, ich habe eine Microsoft SQL Server 2000 - Datenbank übernommen und wundere mich jetzt etwas über manche verwendete Datentypen. Handelt es sich beim Typ "numeric 5(5,0)" um einen Gleitkommawert mit 5 Stellen ? Im Schema "numeric A(B,C)" handelt es sich dann bei "A" vermutlich um die gesamte Stellenzahl, sind "B" Vorkomma- und "C" die Nachkommastellen ? Was bedeutet dann aber "numeric 5(8,0)" (kommt in der DB auch vor) ? Ist es tatsächlich sinnvoll, für einen immer ganzzahligen Index den Typ "numeric" zu werwenden, ich hätte einen Integer-Typ für besser gehalten ? Wie kann der Speicherbedarf (im Arbeitsspeicher bzw. auf der Festplatte) für den Typ "numeric A(B,C)" in Abhängigkeit von der A, B und C berechnet werden ? Wie unterscheiden sich grössenordnungsmässig die Suchzeiten für den Befehl "select * from tab_XYZ where index=100", wenn "index" vom Typ "numeric" bzw. vom Typ "int" ist ? THX, interrupt
interrupt; schrieb: > Was bedeutet dann aber "numeric 5(8,0)" (kommt in der DB auch vor) ? Ein Wert mit fester Stellenzahl und keinem Offset: http://msdn.microsoft.com/de-de/library/ms187746.aspx Für den Rest siehe ebenso die Doku... oder einfach mal ein EXPLAIN ausführen.
Bist Du sicher, daß die Form "numeric A(B,C)" etwas ist, was der SQL-Server verdaut? Oder ist das nur sowas wie eine Beschreibungssprache auf höherer Applikationsebene? Ich (uznd der von Läubi gezeigte Link) kenne jedenfalls von anderen DB's nur die Form "numeric(B,C)". >Wie unterscheiden sich grössenordnungsmässig die Suchzeiten für den >Befehl >"select * from tab_XYZ where index=100", wenn "index" vom Typ "numeric" >bzw. vom Typ "int" ist ? Eigentlich gar nicht, wenn der Index relativ "unique" ist. Wenn dagegen ziemlich viele Rows dabei gefunden werden, dann kommt es drauf an, ob der numeric-Typ vom Speicherbedarf her (abhängig von dessen Precision) länger oder kürzer als 4Byte (=Integer-Länge) ausfällt. Wenn länger, dann mehr Speicherbedarf in der Tabelle, damit Tabelle bzw. Index größer, mehr Pages, die gelesen werden müssen. Ist aber eher eine theoretische Betrachtung, denn ich denke, die Unterschiede werden trotzdem eher marginal sein.
Ach ja: numeric/decimal statt (big)int trotz Ganzzahlen macht eigentlich nur dann Sinn, wenn man einen deutlich größeren Wertebereich braucht, als (big)int darstellen kann (um die 20 Stellen), oder wenn man Speicherplatz sparen will bei nur kleinen Zahlen (letzteres macht aber auch keinen Sinn, da es ja small/tinyint gibt)
Jens G. schrieb: > Bist Du sicher, daß die Form "numeric A(B,C)" etwas ist, was der > SQL-Server verdaut? Jetzt sehe ich das klarer : - Der Enterprise Manager (Verwaltungstool) des MSSQL2000 zeigt unter Eigenschaften der Tabelle für eine SpalteXY z.B. "numeric 5(5,0)" an. Im generierten SQL-Skript zur Erzeugung der Tabelle steht für den Datentyp dagegen der Befehl "[SpalteXY] [numeric](5, 0) NOT NULL " THX !
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.