För att svara på din fråga:ja det kommer att bli mindre presterande. Uppenbarligen, ju större typ, desto större tabell, desto långsammare frågor (mer I/O, större index, längre åtkomsttid, resultat mindre sannolikt att få plats i de olika cacharna, och så vidare). Så som en tumregel:använd alltid den minsta typen som passar du behöver.
Som sagt, prestandan spelar ingen roll . Varför? För när du når en punkt där du svämmar över en INT, då är BIGINT den enda lösningen och du måste leva med det. Också vid den tidpunkten (med tanke på att du använder en automatisk ökning av PK kommer du att vara över 4 miljarder rader), kommer du att ha större prestandaproblem, och overheaden för en BIGINT jämfört med en INT kommer att vara den minsta av dina problem.
Så tänk på följande punkter:
- Använd UNSIGNED om du inte behöver negativa värden, det fördubblar gränsen.
- OSIGNED INT maxvärde är 4.294.967.295. Om du använder en automatisk ökning av PK och du bara har 300 000 poster behöver du verkligen inte oroa dig . Du kan till och med använda en MEDIUMINT för tillfället, om du inte planerar för en riktigt snabb tillväxt. (se http://dev.mysql.com/doc /refman/5.1/en/integer-types.html )
- Siffran inom parentes efter typen påverkar inte maxvärdet för typen . INT(7) är samma som INT(8) eller INT(32). Den används för att ange visningsbredden om du anger ZEROFILL (se http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html )