Mysql
 sql >> Datenbank >  >> RDS >> Mysql

BIGINT MySQL-Leistung im Vergleich zu INT

Um Ihre Frage zu beantworten:Ja, es wird weniger leistungsfähig. Je größer der Typ, desto größer die Tabelle, desto langsamer sind natürlich die Abfragen (mehr I/O, größere Indizes, längere Zugriffszeit, Ergebnis, das weniger wahrscheinlich in die verschiedenen Caches passt, und so weiter). Als Faustregel gilt also:Immer den kleinsten Typ verwenden das passt, was Sie brauchen.

Davon abgesehen spielt Leistung keine Rolle . Wieso den? Denn wenn Sie einen Punkt erreichen, an dem ein INT überläuft, dann ist BIGINT die einzige Lösung und Sie müssen damit leben. Auch an diesem Punkt (wenn man bedenkt, dass Sie eine Auto-Increment-PK verwenden, werden Sie über 4 Milliarden sein Zeilen), haben Sie größere Leistungsprobleme und der Overhead eines BIGINT im Vergleich zu einem INT wird Ihre geringste Sorge sein.

Berücksichtigen Sie also die folgenden Punkte:

  • Verwenden Sie UNSIGNED, wenn Sie keine negativen Werte benötigen, das verdoppelt das Limit.
  • UNSIGNED INT Maximalwert ist 4.294.967.295. Wenn Sie einen PK mit automatischer Erhöhung verwenden und nur 300.000 Einträge haben, brauchen Sie sich wirklich keine Sorgen zu machen . Sie könnten im Moment sogar ein MEDIUMINT verwenden, es sei denn, Sie planen ein wirklich sehr schnelles Wachstum. (siehe http://dev.mysql.com/doc /refman/5.1/en/integer-types.html )
  • Die Zahl in Klammern nach dem Typ hat keinen Einfluss auf den Maximalwert des Typs . INT(7) ist dasselbe wie INT(8) oder INT(32). Es wird verwendet, um die Anzeigebreite anzugeben, wenn Sie ZEROFILL angeben (siehe http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html )