sql >> Database >  >> RDS >> Sqlserver

Hoe worden varchar-waarden opgeslagen in een SQL Server-database?

Volkomen zinloze beperking voor zover ik kan zien. Uitgaande van standaard FixedVar formaat (in tegenstelling tot de formaten die worden gebruikt met rij-/paginacompressie of dunne kolommen) en ervan uitgaande dat je het hebt over varchar(1-8000) kolommen

Alle varchar gegevens worden aan het einde van de rij opgeslagen in een sectie met variabele lengte (of in offrow-pagina's als het niet in de rij past). De hoeveelheid ruimte die het in die sectie in beslag neemt (en of het al dan niet uit de rij komt) is volledig afhankelijk van de lengte van de feitelijke gegevens en niet van de kolomdeclaratie.

SQL Server gebruikt de lengte die is opgegeven in de kolomdeclaratie bij het toewijzen van geheugen (bijvoorbeeld voor sort activiteiten). De veronderstelling die het in dat geval maakt, is dat varchar kolommen worden gevuld om Gemiddeld 50% van hun aangegeven maat dus dit is misschien beter om naar te kijken bij het kiezen van een maat.



  1. Docker - Voer Apache uit op host en container voor verschillende websites

  2. ScyllaDB-trends – hoe gebruikers de realtime big data-database implementeren

  3. Hoe deze uitvoer op te vragen in SQL-server

  4. Hoe kan ik een groep tekst samenvoegen en maken op de SQL-server?