SQL Datentypen und Speichergrössen;

Gast #2992334
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
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)
Gast
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 !

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.