Für eine Website wie Facebook, verwendet es int
oder varchar
? Zum Beispiel gibt es für die Anzahl der Posts auf Facebook Milliarden oder Billionen. Verwenden Sie also int
für jede Post-ID oder verwenden Sie varchar
? Das Maximum für int ist 2.147.483.647, also bin ich verwirrt. Bitte helfen Sie, danke.Varchar oder int für viele Datensätze?
Antwort
es gibt auch einen BIGINT.
Der unterzeichnete Bereich -9223372036854775808 zu 9223372036854775807.
Der unsigned Bereich 0 bis 18446744073709551615.
Das ist mehr als genug :)
Was ist mit Benutzer-ID? denkst du, dass es "int" sein kann? –
@JasonBale nur für eine gewisse Zeit. Oder später können Sie Situation mit PSY Gangnam Style Videoclip bekommen. Google sagte, dass sie nie gedacht hätten, dass irgendein Video so viele Ansichten erreichen könnte. – Rulisp
Wie @Sammitch erwähnt, UUID einen langen Wert erzeugen kann Das hat einen viel größeren Bereich als ein 32-Bit-Int. UUID generiert einen 128-Bit-Wert.
Bedenken Sie auch, dass ein Primärschlüssel ein zusammengesetzter Primärschlüssel sein kann, so dass Sie die Anzahl der Möglichkeiten stark erweitern können.
Sie haben nach der Benutzer-ID gefragt. Ich beriet mich für eine Website, deren Werte für ihre signierte 32-Bit-INT-Benutzer-ID nicht mehr ausreichten. Der Grund war, dass sie aufgrund eines Fehlers 1000 oder mehr Werte für jeden neu erstellten Benutzer übersprungen haben. Sie hatten also viel schneller keine Werte mehr, als wenn sie die Benutzer-IDs 1 auf einmal erhöht hätten.
Ich half ihnen Upgrade ihrer Benutzer-ID auf BIGINT. Wir mussten dies in der Benutzertabelle und in ungefähr 30 anderen Tabellen tun, die die Benutzertabelle referenzierten (weil es nicht gut wäre, größere Werte für Benutzer-ID zuzulassen, wenn die anderen Tabellen noch INT verwenden und die größeren Werte nicht referenzieren können). .
Siehe auch meine Antwort auf Integer overflow what will be next.
das ist eine perfekte Erklärung. Danke für das reale Beispiel! +1 –
- 1. Konvertierungsfehler varchar auf einer Säule gegossen wie in int int
- 2. Primärschlüssel in MySQL: INT (n) oder UUID als varchar (36)
- 3. Cast oder konvertieren Varchar in SQL Server zu INT
- 4. Eine Spalte für viele Datensätze aktualisieren
- 5. Reports funktioniert nicht für viele Datensätze
- 6. SQL SELECT Geschwindigkeit Int vs Varchar
- 7. zu viele Initialisierer für 'int [0]' C++
- 8. Cast von VARCHAR auf INT - MySQL
- 9. Standardwerte für die Datentypen varchar und int mysql
- 10. InnoDB -> Anzahl der Schlüssel für Int vs VarChar
- 11. INT vs VARCHAR auf der Suche
- 12. Kombiniere varchar Spalte mit int Spalte
- 13. Varchar-Spalten: Nullable oder nicht
- 14. SQLite.NET-Erweiterungen Viele zu viele, keine Join-Tabelle Datensätze erstellt
- 15. Entity Framework: Doppelte Datensätze in Viele-zu-Viele-Beziehung
- 16. Konvertieren von Varchar zu Float oder umgekehrt
- 17. Rails viele zu viele, Samen Datensätze mit zusätzlichen Informationen
- 18. Abfrageoptimierung für viele zu viele
- 19. Datensätze, die andere Beziehung haben [viele zu viele]
- 20. MySQL konvertieren Spalten-Datentyp von VARCHAR zu INT
- 21. Welcher Typ ist int (int) & oder int (int) const &?
- 22. Viele Datensätze gleichzeitig in Rails aktualisieren
- 23. Laravel 5.4: Viele zu viele Pivot-Tabelle Datensätze
- 24. MySQL eins zu viele Beziehung: GROUP_CONCAT oder JOIN oder beides?
- 25. SQL Store varchar oder int, wenn ich nur eine Reihe von Werten habe
- 26. Aufschalten __repr__ oder pprint für int
- 27. IBInspectable funktioniert nicht für Int oder UInt
- 28. Json.fromJson funktioniert nicht für Int oder Double
- 29. MYSQL VARCHAR oder CHAR für feste Länge string
- 30. "Konvertierung fehlgeschlagen beim Konvertieren der VARCHAR-Wert 'NULL' in den Datentyp Int"
'BIGINT' kann 18.446.744.073.709.551.615 Werte verarbeiten, aber die Sequenzgenerierung [zB: auto-increment] ist eine große Barriere für die Parallelisierung, so dass sie wahrscheinlich UUIDs oder etwas ähnliches verwenden. – Sammitch
@Sammitch Entschuldigung, was meinst du? Ich verstehe nicht wirklich –
Ich zitiere [diese Antwort auf Stack] (http://Stackoverflow.com/a/4638170/1415724): * "... in MySQL, Max Wert für BigInt ist 18.446.744.073.709.551.615. Also, wenn Sie 100 Millionen einfügen Reihen pro Sekunde, dauert es 5849 Jahre, bevor Sie keine Zahlen mehr haben. "* –