sql >> Database >  >> RDS >> Mysql

Hoe slaat InnoDB karakterkolommen op?

Van MySQL Documentatie :

Het verschil tussen CHAR en VARCHAR waarden is de manier waarop ze worden opgeslagen, CHAR (10) vereist 10 bytes opslagruimte, ongeacht het aantal tekens dat u gebruikt, omdat de gegevens rechts zijn gevuld met spaties, VARCHAR (10) duurt slechts 1 byte (in een tekenset van 1 byte) + voorvoegsel voor lengte (1 als de lengte 255 of minder is, anders 2... Ik weet niet waarom key_len voor EXPLAIN voeg 2 bytes toe)

Ik begrijp niet wat je bedoelt met volgspaties, hoewel ik me kan voorstellen dat je doelt op het teveel aan volgspaties, met VARCHAR deze worden afgekapt met een waarschuwing, ondertussen in CHAR kolommen deze spaties worden stil afgekapt, dit heeft een bepaalde reden CHAR worden opgeslagen met aan het einde blanco's.

Over tekenset in deze link u kunt zien dat het aantal tekens voor de CHAR of VARCHAR is hetzelfde, hoewel uw opslag 1 tot 4 bytes per teken nodig heeft, hier is de lijst met ondersteunde tekensets en hier de bytes per teken.

Wat ik heb gelezen over verschillende rijenindelingen voor InnoDB

Kenmerken van redundante rij-indelingen :

COMPACTE kenmerken van rij-indeling :




  1. Kan geen verbinding maken met PostgreSQL met PHP pg_connect()

  2. JSON naar MYSQL - is het JSON-antwoord correct geformatteerd - loopt het correct door?

  3. Oracle.DataAccess niet beschikbaar voor selectie in Visual Studio 2013

  4. Lijst van alle identiteitskolommen in een SQL Server-database:sys.identity_columns