VARCHAR
je uložen v souladu s tabulkou. VARCHAR
je rychlejší, když je velikost přiměřená, přičemž kompromis, který by byl rychlejší, závisí na vašich datech a vašem hardwaru, budete chtít s vašimi daty porovnat scénář reálného světa.
Efektivní maximální počet bajtů, které lze uložit do VARCHAR
nebo VARBINARY
sloupec podléhá maximální velikosti řádku 65,535 bytes
, který je sdílený mezi všemi sloupci.
Například VARCHAR(255)
sloupec může obsahovat řetězec o maximální délce 255 znaků. Za předpokladu, že sloupec používá znakovou sadu latin1 (jeden bajt na znak), skutečné požadované úložiště je délka řetězce (L) plus jeden bajt pro záznam délky řetězce. Pro řetězec 'abcd'
, L
je 4
a požadavek na úložiště je pět bajtů. Pokud je místo toho stejný sloupec deklarován jako použití ucs2
dvoubajtová znaková sada, požadavek na úložiště je 10 bajtů:Délka 'abcd' je osm bajtů a sloupec vyžaduje dva bajty k uložení délek, protože maximální délka je větší než 255 (až 510 bytes
).
Pro větší data zvažte použití TEXT
nebo BLOB
. TEXT
a BLOB
sloupce jsou v NDB
implementovány odlišně úložiště, kde každý řádek obsahuje TEXT
sloupek se skládá ze dvou samostatných částí. Jeden z nich má pevnou velikost (256 bytes)
a je skutečně uložen v původní tabulce. Druhá se skládá z jakýchkoli dat přesahujících 256 bytes
, která je uložena ve skryté tabulce. Řádky v této druhé tabulce mají vždy 2,000 bytes
dlouho. To znamená, že velikost TEXT
sloupec je 256
if size <= 256
(kde velikost představuje velikost řádku); jinak je velikost 256 + size + (2000 – (size – 256) % 2000)
.
http://dev.mysql.com/doc/refman /5.6/cs/storage-requirements.html
Závisí na vašem vztahu k databázi, pokud tato pole v dotazu používáte zřídka. Například pro další informace. Vytvořit oddělenou tabulku je dobrá volba (normalizovat).
POZNÁMKY: VARCHAR
se liší od CHAR
. Pokud vytvoříte VARCHAR(250)
a vložte pouze 20
znaků na něm, pak to zabere 5 bytes
+ L
liší se od CHAR(250)
, bude to trvat 250 bytes
+ L
za stejných podmínek.