Ich schreibe eine MVC5 Internet-Anwendung und ich habe eine Frage über das ID-Feld für ein Modell.
Soll ich ein int oder ein long für die ID in einem Modell verwenden? Ich spreche über das Feld, das für den Primärschlüssel verwendet wird? Ist ein int genug, wenn die Datenbank 100.000 Datensätze enthält? Ist ein int in c # anders als ein int in einer SQL-Datenbank?
Vielen Dank im Voraus
Beide sind in Ordnung. Es hängt davon ab, wie viele Datensätze in einer Tabelle enthalten sind. Int erlaubt nur 2 * 10 ^ 9 Datensätze pro Tabelle.
Wenn Sie sicher sind, dass 2 * 10 ^ 9 genug ist, verwenden Sie int als Schlüssel.
Aber: Wenn es eine winzige Chance gibt, dass die Anzahl der Datensätze mehr als 2 * 10 ^ 9 beträgt, verwenden Sie das Long. Wenn Sie keine Ahnung haben, wie viele Datensätze Sie haben, verwenden Sie lange.
Mit einem Typ INT
, beginnend bei 1, erhalten Sie über 2 Milliarden mögliche Zeilen - das sollte für die überwiegende Mehrheit der Fälle mehr als ausreichend sein. Mit BIGINT
bekommst du ungefähr 922 Billiarden (922 mit 15 Nullen - 922'000 Milliarden) - genug für dich?
Wenn Sie INT IDENTITY
bei 1 beginnen und eine Zeile pro Sekunde rund um die Uhr einfügen, benötigen Sie 66,5 Jahre , bevor Sie die 2 Milliarden erreichen begrenzen ....
Wenn Sie BIGINT IDENTITY
verwenden ( BIGINT
in T-SQL ist als long
oder Int64
in .NET-Sprachen definiert), beginnend mit 1, und Sie fügen eintausend Zeilen pro Sekunde ein , du brauchst 292 Millionen Jahre , bevor du die Grenze von 922 Billiarden erreicht hast ....
Lesen Sie mehr darüber (mit allen verfügbaren Optionen) in der MSDN-Onlinedokumentation .
Sowohl C # als auch SQL haben die gleiche Definition für int
. Dies ist ein ganzzahliger Datentyp, der von -2^31
zu 2^31 - 1
(2.147.483.647, wenn Sie bevorzugen) geht.
Wie Sie sehen können, könnten Ihre 100.000 Datensätze mehr als 20.000 mal in einem int
Platz finden, also ja , Sie werden in Ihrem aktuellen Szenario in Ordnung sein.
A long
würde sich jedoch in ein bigint
in sql übersetzen (es gibt keine "long" per se), und der Wert wird bei 2^63 - 1
begrenzt.
Tags und Links c# primary-key model entity-framework-6 int