sql >> Database teknologi >  >> RDS >> Mysql

Hvad er virkningen af ​​at ændre længden af ​​en varchar i mysql?

Længden af ​​en varchar-kolonne er fastsat til den længde, du angiver, når du opretter tabellen. Længden kan være en hvilken som helst værdi fra 0 til 255 (før MySQL 5.0.3) og fra 0 til 65.535 (i MySQL 5.0.3 og nyere).

Lagringen af ​​varchar er bytes af data med tilføjelse af en eller to bytes for at erklære længden af ​​strengen. Hvis den maksimale længde er 255 eller mindre, tilføjes kun 1 byte længde.

Hvis du bruger ændringstabel og ændrer den maksimale længde, vil ingen datalagerstørrelse blive påvirket, hvis den definerede maksimale længde er under 255. Hvis du øger den maksimale længde til over 255, er det op til lagermotoren, om den tvinger to bytes eller ikke for værdier under 255, i så fald vil den øges med 1 byte for hver række.

Char-typen er anderledes end varchar, da char altid bruger den nødvendige plads, så hvis du havde char(10) og varchar(10), men kun gemt "hej" i hver, ville char bruge alle 10 bytes, vharchar ville indeholde 6 bytes ( 5 for hej og 1 for længden), derfor vil en ændring af størrelsen på varchar-kolonner ikke tildele mere lagerplads, som det ville, hvis det var en char-type.

Det virkelige spørgsmål er nu, hvorfor vil du have PHP til at manipulere varchar-størrelsen? Du bør angive størrelsen af ​​en grund, hvis du vil have et felt med variabel længde, der kan indeholde meget tekst (mere end 65.535 bytes) og også dynamisk, så det kun bruger den minimale plads, der kræves, kan TEKST-typerne måske være bedre for din situation ?




  1. Udpak MySQL-felter af række til PHP-variabler og array

  2. Indsættelse af værdier i en mysql-database virker ikke som forventet

  3. Præstationer / Badges system

  4. MySQL gemme resultater af EXECUTE i en variabel?