VARCHAR
wordt inline met de tabel opgeslagen. VARCHAR
is sneller als de grootte redelijk is, waarvan de afweging sneller zou zijn, hangt af van uw gegevens en uw hardware, u zou een realistisch scenario met uw gegevens willen benchmarken.
Het effectieve maximale aantal bytes dat kan worden opgeslagen in een VARCHAR
of VARBINARY
kolom is onderhevig aan de maximale rijgrootte van 65,535 bytes
, die door alle kolommen wordt gedeeld.
Bijvoorbeeld een VARCHAR(255)
kolom kan een tekenreeks bevatten met een maximale lengte van 255 tekens. Ervan uitgaande dat de kolom de latin1-tekenset gebruikt (één byte per teken), is de werkelijke vereiste opslag de lengte van de tekenreeks (L), plus één byte om de lengte van de tekenreeks vast te leggen. Voor de string 'abcd'
, L
is 4
en de opslagvereiste is vijf bytes. Als dezelfde kolom in plaats daarvan is gedeclareerd om de ucs2
. te gebruiken dubbelbyte tekenset, de opslagvereiste is 10 bytes:de lengte van 'abcd' is acht bytes en de kolom vereist twee bytes om lengtes op te slaan omdat de maximale lengte groter is dan 255 (tot 510 bytes
).
Overweeg voor grotere gegevens TEXT
. te gebruiken of BLOB
. TEXT
en BLOB
kolommen zijn anders geïmplementeerd in de NDB
opslagengine, waarbij elke rij in een TEXT
kolom bestaat uit twee afzonderlijke delen. Een daarvan is van vaste grootte (256 bytes)
, en wordt feitelijk opgeslagen in de originele tabel. De andere bestaat uit gegevens van meer dan 256 bytes
, die is opgeslagen in een verborgen tabel. De rijen in deze tweede tabel zijn altijd 2,000 bytes
lang. Dit betekent dat de grootte van een TEXT
kolom is 256
if size <= 256
(waarbij grootte de grootte van de rij voorstelt); anders is de maat 256 + size + (2000 – (size – 256) % 2000)
.
http://dev.mysql.com/doc/refman /5.6/nl/storage-requirements.html
Hangt af van uw databaserelatie, of u die velden zelden gebruikt in query's. Bijvoorbeeld voor extra info. Een gescheiden tabel maken is een goede optie (normaliseren).
OPMERKINGEN: VARCHAR
is anders met CHAR
. Als u VARCHAR(250)
. aanmaakt en voeg slechts 20
in tekens erop, dan duurt het 5 bytes
+ L
anders met CHAR(250)
, het duurt 250 bytes
+ L
voor dezelfde conditie.