sql >> Databasteknik >  >> RDS >> Mysql

Vad är effekten av att ändra längden på en varchar i mysql?

Längden på en varchar-kolumn är fixerad till den längd du deklarerar när du skapar tabellen. Längden kan vara vilket värde som helst från 0 till 255 (före MySQL 5.0.3) och från 0 till 65 535 (i MySQL 5.0.3 och senare).

Lagringen av varchar är byte av data med tillägg av en eller två byte för att deklarera längden på strängen. Om den maximala längden är 255 eller mindre kommer endast 1 byte längd att läggas till.

Om du använder alter table och ändrar den maximala längden kommer ingen datalagringsstorlek att påverkas om den definierade maximala längden är under 255. Om du ökar den maximala längden över 255 är det upp till lagringsmotorn om den tvingar två byte eller inte för värden under 255, i så fall ökar den med 1 byte för varje rad.

Char-typen skiljer sig från varchar eftersom char alltid använder det utrymme som krävs, så om du hade char(10) och varchar(10) men bara lagrade "hej" i varje, skulle char använda alla 10 byte, vharchar skulle hålla 6 byte ( 5 för hej och 1 för längden), därför kommer en ändring av storleken på varchar-kolumner inte att tilldela mer lagringsutrymme som det skulle göra om det var en koltyp.

Den verkliga frågan nu är varför skulle du vilja att PHP ska manipulera varchar-storleken? Du bör ange storleken av en anledning, om du vill ha ett fält med variabel längd som kan innehålla mycket text (mer än 65 535 byte) och även dynamiskt så att det bara använder det minsta utrymme som krävs kanske TEXT-typerna kan vara bättre för din situation ?




  1. ap_proxy_connect_backend inaktiverar arbetare för (127.0.0.1)

  2. Hur man massändrar MySQL Triggers DEFINER

  3. Varför skickar SQL-servern det här felet:Kan inte infoga värdet NULL i kolumnen 'id'?

  4. Tips och knep med hjälp av revisionsloggning för MariaDB