sql >> Database >  >> RDS >> Mysql

Varchar- of tekstgegevenstypen voor strings met een lengte tot enkele duizenden tekens

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 van VARCHAR(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, volg CHARACTER 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?



  1. Maak een nieuwe Ruby on Rails-toepassing met MySQL in plaats van SQLite

  2. Hoe maak je geselecteerde dynamische velden uit een tabel in mysql?

  3. Een door komma's gescheiden waarde zoeken

  4. Een doorlopend totaal voor een voortschrijdende periode maken