Om je vraag te beantwoorden:ja, het wordt minder performant. Het is duidelijk dat hoe groter het type, hoe groter de tabel, hoe langzamer de query's (meer I/O, grotere indexen, langere toegangstijd, minder waarschijnlijk dat het resultaat in de verschillende caches past, enzovoort). Dus als vuistregel:gebruik altijd het kleinste type die bij u past.
Dat gezegd hebbende, prestaties doen er niet toe . Waarom? Want als je een punt bereikt waarop je een INT overloopt, dan is BIGINT de enige oplossing en zul je ermee moeten leven. Ook op dat moment (aangezien je een auto-increment PK gebruikt, ben je meer dan 4 miljard rijen), heb je grotere prestatieproblemen en de overhead van een BIGINT in vergelijking met een INT is de minste van je zorgen.
Overweeg dus de volgende punten:
- Gebruik UNSIGNED als je geen negatieve waarden nodig hebt, dat verdubbelt de limiet.
- UNSIGNED INT max waarde is 4.294.967.295. Als je een auto-increment PK gebruikt, en je hebt maar 300.000 items, hoef je je echt geen zorgen te maken . Je zou op dit moment zelfs een MEDIUMINT kunnen gebruiken, tenzij je van plan bent om echt heel snel te groeien. (zie http://dev.mysql.com/doc /refman/5.1/en/integer-types.html )
- Het getal tussen haakjes na het type heeft geen invloed op de maximale waarde van het type . INT(7) is hetzelfde als INT(8) of INT(32). Het wordt gebruikt om de weergavebreedte aan te geven als u ZEROFILL specificeert (zie http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html )