Odpověď na vaši otázku:ano, bude to méně výkonné. Je zřejmé, že čím větší typ, tím větší tabulka, tím pomalejší jsou dotazy (více I/O, větší indexy, delší přístupová doba, menší pravděpodobnost, že se vejdou do různých mezipamětí atd.). Takže zásada:vždy používejte nejmenší typ to, co potřebujete.
Jak již bylo řečeno, na výkonu nezáleží . Proč? Protože když dosáhnete bodu, kdy přetečete INT, pak je BIGINT jediným řešením a budete s tím muset žít. Také v tomto okamžiku (vzhledem k tomu, že používáte automatické zvýšení PK, budete mít více než 4 miliardy řádky), budete mít větší problémy s výkonem a režie BIGINT ve srovnání s INT bude tou nejmenší starostí.
Zvažte tedy následující body:
- Pokud nepotřebujete záporné hodnoty, použijte UNSIGNED. Tím se limit zdvojnásobí.
- Maximální hodnota UNSIGNED INT je 4 294 967 295. Pokud používáte automatický přírůstek PK a máte pouze 300 000 záznamů, opravdu se nemusíte bát . V tuto chvíli můžete dokonce použít STŘEDNÍ, pokud neplánujete opravdu rychlý růst. (viz http://dev.mysql.com/doc /refman/5.1/en/integer-types.html )
- Číslo v závorkách za typem nemá vliv na maximální hodnotu typu . INT(7) je totéž jako INT(8) nebo INT(32). Používá se k označení šířky zobrazení, pokud zadáte ZEROFILL (viz http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html )