sql >> Database >  >> RDS >> Mysql

Wat is de impact van het wijzigen van de lengte van een varchar in mysql?

De lengte van een varchar-kolom is vastgesteld op de lengte die u aangeeft wanneer u de tabel maakt. De lengte kan elke waarde zijn van 0 tot 255 (vóór MySQL 5.0.3) en van 0 tot 65.535 (in MySQL 5.0.3 en later).

De opslag van de varchar is de bytes aan gegevens met de toevoeging van een of twee bytes om de lengte van de string te declareren. Als de maximale lengte 255 of minder is, wordt er slechts 1 byte aan lengte toegevoegd.

Als u de tabel wijzigen gebruikt en de maximale lengte wijzigt, wordt de grootte van de gegevensopslag niet beïnvloed als de gedefinieerde maximale lengte kleiner is dan 255. Als u de maximale lengte verhoogt tot boven 255, is het aan de opslagengine om twee bytes of niet voor waarden onder 255, in dat geval wordt het voor elke rij met 1 byte verhoogd.

Het char-type is anders dan varchar, omdat char altijd de vereiste ruimte gebruikt, dus als je char (10) en varchar (10) had, maar alleen "hallo" in elk had opgeslagen, zou char alle 10 bytes gebruiken, zou vharchar 6 bytes bevatten ( 5 voor hallo en 1 voor de lengte), daarom zal het wijzigen van de grootte van varchar-kolommen niet meer opslagruimte toewijzen zoals het zou doen als het een char-type was.

De echte vraag is nu waarom zou je willen dat PHP de varchar-grootte manipuleert? U moet de grootte met een reden specificeren, als u een veld met variabele lengte wilt dat veel tekst kan bevatten (meer dan 65.535 bytes) en ook dynamisch, zodat het alleen de minimaal vereiste ruimte gebruikt, misschien zijn de TEKST-typen misschien beter voor uw situatie ?




  1. Nieuwe kolom maken met rijen omhoog verschoven in MySql

  2. hoe ga je om met tijdzoneproblemen?

  3. Kan ik een aangepaste query pagineren zonder de standaard paginering te overschrijven?

  4. Postgresql dwingt een unieke tweerichtingscombinatie van kolommen af