2009-05-03 16 views
7

Ich arbeite an dem Projekt mit relativ großen DB-Tabelle (700K Zeilen).MySQL Primärschlüssel Spalte Typ für große Tabellen

Fehler, habe ich beim Entwerfen DB-Schema gemacht. Wenn die Zeilen anstiegen, musste ich den ID-Spaltentyp bigint (x) erhöhen.

Jetzt ist es bigint (44). Ich habe Angst, hohen x-Wert zu setzen, weil ich dachte, dass es die Leistung erheblich verlangsamen kann. Vielleicht irre ich mich ..

Bitte helfen Sie mir bei der Lösung des Problems.

Welchen Spaltentyp kann ich einmal einstellen und dieses Problem vergessen?

Was sollte ich im Bereich des DB-Schemadesigns besser lernen?

Antwort

13

Wenn Sie eine Spalte als BIGINT(44) erstellen, ist "44" die Anzeigebreite - sie beeinflusst nicht den Wertebereich, den Sie speichern können, oder die Geschwindigkeit, mit der sie abgerufen werden.

Für eine automatisch inkrementierende ID möchten Sie eine UNSIGNED-Nummer verwenden, z. BIGINT(44) UNSIGNED. Dies wird den Wertebereich verdoppeln und eine zusätzliche Einschränkung hinzufügen, was normalerweise eine gute Sache ist.

Ein unsigned INT speichert bis zu 4.294.967.295 Ein unsigned BIGINT speichert bis zu 18.446.744.073.709.551.615 - Sie werden das nicht bald füllen.

Sie sagen nicht, wie schnell Ihre maximale ID wächst - wenn Sie nicht viele Zeilen einfügen, sollten Sie mit UNSIGNED INT bleiben, da es weniger Platz benötigt.

1

Ich denke, dass jeder Primärschlüssel standardmäßig nicht signiert ist. In jedem Fall ist die Verwendung negativer Zahlen für Primärschlüssel bestenfalls verpönt und bricht Dinge.

+0

Könnten Sie bitte genauer sein? "Pausen" ist ziemlich vage. Was genau bricht es? – Nobody

Verwandte Themen