sql >> Database >  >> RDS >> Mysql

Bezetten char / varchar / text / longtext-kolommen in MySQL de volledige grootte in het bestandssysteem, zelfs voor gedeeltelijk gevulde cellen?

Bekijk http://dev.mysql.com /doc/refman/5.7/en/string-type-overview.html

In principe zijn al deze typen behalve de CHAR zijn van variabele lengte.

Als u bijvoorbeeld VARCHAR(72) . heeft en je schrijft abcd erin, bewaart u 5 bytes. 4 bytes voor elk teken, en een prefix van 1 byte om de lengte van de string op te slaan (dat is 4).

Als de string langer is dan 255 tekens, is het VARCHAR-voorvoegsel 2 bytes. Dus een VARCHAR(300) met een string van 256 karakters erin opgeslagen, zal 258 bytes in beslag nemen.

TINYTEXT heeft altijd een prefix van 1 byte, omdat je er maar 255 tekens in kunt opslaan, dus abcd zou 5 bytes in beslag nemen.

TEXT heeft een prefix van 2 bytes, dus abcd zou 6 bytes zijn.

LONGTEXT heeft een prefix van 4 bytes, dus abcd zou 8 bytes zijn.

Ten slotte is er de bijna nutteloze CHAR type. Een CHAR(72) zal altijd 72 bytes in beslag nemen, ongeacht wat je erin opslaat. Het is eigenlijk alleen handig voor superkorte velden waar er altijd exact hetzelfde aantal tekens in het veld staat. Like Y of N zou een goede CHAR(1) . zijn kandidaat.




  1. Moeten PHP-ontwikkelaars de opgeslagen procedures van MySQL gebruiken?

  2. MySQL wil niet starten

  3. Hoe gebruik ik de huidige datum in een HQL-query met een Oracle-database?

  4. Fout bij het configureren van de slaapstand 5.0.1 en MySQL