Mysql
 sql >> база данни >  >> RDS >> Mysql

BIGINT mysql производителност в сравнение с INT

За да отговоря на въпроса ви:да, ще стане по-малко производителен. Очевидно, колкото по-голям е типът, толкова по-голяма е таблицата, толкова по-бавни са заявките (повече 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 )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвате външни ключове с PHP

  2. Доктрина 2:Не може да се избере обект чрез идентификационни променливи, без да се избере поне един псевдоним на основния обект

  3. Липсва mysql.sock; дава OperationalError:(2002, Не мога да се свържа с локален MySQL сървър чрез сокет '/tmp/mysql.sock' (2))

  4. TIME() Примери – MySQL

  5. Какво не е наред с тази съхранена процедура?