Er zijn verschillende plaatsen waar VARCHAR
en TEXT
wel of niet verschillen. Sommige dingen die ik zeg:
- Als de maximale lengte meer is dan 512 tekens , ga met
TEXT
. - Gebruik nooit
TINYTEXT
-- het heeft alleen negatieven ten opzichte vanVARCHAR(255)
. - Gebruik
VARCHAR(255)
niet; kies een redelijk maximum in plaats van 255. (Dit is een kleine optimalisatie met betrekking tot de tijdelijke tabel in complexe zoekopdrachten.) - Gebruik
CHAR
alleen voor dingen die echt een vaste lengte hebben. In bijna al deze gevallen, volgCHARACTER SET ascii
(of latijn1). (Anders neemt het meer ruimte in dan je verwacht. - Gebruik
CHARACTER SET ut8mb4
. (Uitzonderingen worden steeds zeldzamer.)
(Sorry, ik dwaal af. Terug naar het onderwerp...)
Ik indexeer, in lay-out van InnoDB-rijen (er zijn 4 verschillende ROW_FORMATs
), enz, VARCHAR(513)
zal in wezen niet te onderscheiden zijn van TEXT
.
Een van de weinige argumenten voor VARCHAR
is dat het de winkel beperkt tot de opgegeven lengte. Maar hoe vaak is dat belangrijk?