За да отговоря на въпроса ви:да, ще стане по-малко производителен. Очевидно, колкото по-голям е типът, толкова по-голяма е таблицата, толкова по-бавни са заявките (повече I/O, по-големи индекси, по-дълго време за достъп, резултатът е по-малко вероятно да се побере в различните кешове и т.н.). Така че като правило:винаги използвайте най-малкия тип който отговаря на нуждите ви.
Като се има предвид това, ефективността няма значение . Защо? Защото когато стигнете до точка, в която препълвате INT, тогава BIGINT е единственото решение и ще трябва да живеете с него. Също така в този момент (като се има предвид, че използвате PK с автоматично увеличение, ще бъдете над 4 милиарда редове), ще имате по-големи проблеми с производителността и режийните разходи на BIGINT в сравнение с INT ще бъдат най-малкото от притесненията ви.
Така че, помислете за следните точки:
- Използвайте UNSIGNED, ако не се нуждаете от отрицателни стойности, това ще удвои ограничението.
- Максималната стойност на UNSIGNED INT е 4.294.967.295. Ако използвате PK с автоматично увеличение и имате само 300 000 записа, наистина не е нужно да се притеснявате . Можете дори да използвате MEDIUMINT в момента, освен ако не планирате наистина много бърз растеж. (вижте http://dev.mysql.com/doc /refman/5.1/en/integer-types.html )
- Числото в скоби след типа не оказва влияние върху максималната стойност на типа . INT(7) е същото като INT(8) или INT(32). Използва се за указване на ширината на дисплея, ако посочите ZEROFILL (вижте http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html )