Sie würden im Allgemeinen Ganzzahlen anstelle von Varchars verwenden, da diese weniger Speicherplatz beanspruchen, gut verstandene Sortiermuster aufweisen, die schnell indiziert werden können usw. Ganzzahlen sind natürliche Datentypen einer CPU, und daher ist die Leistung im Allgemeinen optimal. Normalerweise besteht eine Ganzzahl aus 4 Bytes, was nur 4 Zeichen in einem (Nicht-Unicode-) Varchar entspricht.
Wenn Sie befürchten, dass Ihnen mit einem INT-Typ der Speicherplatz ausgeht, versuchen Sie es mit BIGINT, bei dem Sie 8-Byte-Zahlen erhalten. Das Limit dafür ist ziemlich groß, und Ihnen würde wahrscheinlich der Speicherplatz ausgehen, bevor Sie dieses Limit erreicht haben :-) Die Leistung von BIGINT wird auch sehr gut sein, zumal viele Server jetzt auch 64-Bit sind .
Die Antwort auf den ersten Teil Ihrer Frage, was passiert, wenn Sie in INTs ausgehen, ist nicht einfach, besonders wie Sie sagten, ohne den Datentyp in BIGINT zu ändern. Grundsätzlich können Sie nicht viel tun, und was Sie möglicherweise tun können, hängt stark von der Art der Daten in Ihrer Datenbank ab. Welche Datensätze sind mit Fremdschlüsseln für diese Daten versehen? Benötigen Sie noch alle Daten in dieser Tabelle und die zugehörigen Datensätze? Unter der Annahme, dass Sie viele der ursprünglichen Daten (und die zugehörigen Daten) archivieren können, kann ich nur vorschlagen, die Daten aus der Tabelle zu verschieben (sagen wir die ersten 1 bis X Millionen Datensätze) und dann Zurücksetzen des Identitäts-Seeds auf 1. Es gibt viele Gründe, die ich jedoch nicht empfehlen würde - zum Beispiel habe ich viele Code-Bits gesehen, die zum Beispiel den Maximalwert eines ID-Felds prüfen. zu sehen, was gerade hinzugefügt wurde, und das würde nicht funktionieren (und sollte nicht getan werden). Außerdem wird davon ausgegangen, dass Datensatz N vor N + 1 erstellt wurde. Keine einfache Antwort, denke ich.
Schließlich weiß ich nichts über MySQL, aber SQL Server würde einen Überlauffehler auslösen, wenn Sie das Limit erreichen.