Genelde varchar yerine tamsayılar kullanırsınız çünkü daha az yer kaplarlar, iyi anlaşılmış sıralama düzeni endekslenirler, vb. Tipik olarak bir tamsayı 4 bayttır (bir unicode olmayan) varchar içinde sadece 4 karaktere eşdeğerdir.
Bir INT türüyle alanınız tükenmesinden endişe ediyorsanız, 8 baytlık sayıları veren BIGINT'i deneyin. Bu sınır oldukça büyük ve bu kayıt sınırına ulaşmadan önce muhtemelen disk alanınız tükenecek :-) BIGINT'in performansı da çok iyi olacak, özellikle de birçok sunucu şimdi 64-bit olduğu için .
INT'lerde bittiğinde ne olacağına dair sorunuzun ilk kısmının cevabı, özellikle de veri türünü BIGINT olarak değiştirmeden söylediğiniz gibi basit değildir. Temelde yapabileceğiniz pek bir şey yoktur ve yapabileceğiniz şey, veritabanınızdaki verilerin doğasıyla çok sınırlıdır. Bu veriler için hangi kayıtlar yabancı anahtarlıdır? Tablodaki tüm verilere ve ilgili kayıtlara hala ihtiyacınız var mı? Birçok başlangıç verisini (ve ilgili verilerini) arşivleyebileceğiniz varsayımına göre, önerebileceğim tek şey verileri tablodan çıkarmak (ilk 1'den X milyon kayıtlara diyelim) ve sonra kimlik tohumunu 1'e sıfırlama. Bunu tavsiye etmememe rağmen her türlü neden var - örneğin bir id alanının maksimum değerini kontrol etmek gibi şeyler yaptığımı gördüğüm birçok kod parçası var, yeni eklenenleri görmek için, bu işe yaramaz (ve yapılmamalıdır). Ayrıca, insanlar N kaydının N + 1'den önce oluşturulduğunu varsayarlar. Bence kolay bir cevap yok.
Son olarak, MySQL hakkında bilmiyorum, ancak sınıra ulaştıysanız SQL Server bir taşma hatası verir.