Hoe wordt databasegeheugen toegewezen?

Als ik een reeks velden declareer die niet altijd nodig zijn, wordt er dan geheugen toegewezen voor elke record of wordt er geen geheugen toegewezen voordat het veld is geïnitialiseerd?

Voorbeeld: als ik een tabel declareer met een id-veld en een char (8) -veld, wordt er dan geheugen toegewezen voor de tekenreeks telkens wanneer een ID wordt gegenereerd en in de tabel wordt ingevoerd, of wordt deze alleen toegewezen als aan de tekenreeks een waarde is toegewezen?

2
"string" is geen geldig gegevenstype. Wat is het actuele gegevenstype van dat veld?
toegevoegd de auteur Joe Stefanelli, de bron

2 antwoord

De database wijst een setgeheugen toe voor velden waarvan de lettergrootte niet verandert, zoals numerieke velden en char (n) . Maar voor velden van het type varchar (n) (variabele lengte), bijvoorbeeld, zijn ze even groot als de gegevens die erin staan.

In uw voorbeeld wijst een veldtype char (8) geheugen toe voor alle 8 tekens. Als u het veldtype varchar (of nvarchar) maakt, zal het alleen zoveel ruimte toewijzen als eraan is toegewezen.

Meer informatie over mysql-tekenreeksen hier .

2
toegevoegd

Kort antwoord: het kost telkens geheugen (of harde ruimte).

Als een veld char (8) is, wijst het ALTIJD 8 bytes toe (plus een leidende 2 bytes voor de databasekop). Als het een lege varchar (34) is, is de minimale ruimte die deze nodig heeft 2.

2
toegevoegd