sql >> Database >  >> RDS >> PostgreSQL

Verschil tussen tekst en varchar (karakter variërend)

Er is geen verschil, onder de motorkap is het allemaal varlena (variabele lengte array).

Bekijk dit artikel van Depesz:http://www.depesz.com/index.php/2010/03/02/charx-vs-varcharx-vs-varchar-vs-text/

Een paar hoogtepunten:

Om het allemaal samen te vatten:

  • char(n) – neemt te veel ruimte in beslag bij waarden die korter zijn dan n (vult ze in naar n ), en kan leiden tot subtiele fouten vanwege het toevoegen van volgspaties, en het is problematisch om de limiet te wijzigen
  • varchar(n) – het is problematisch om de limiet in de live-omgeving te wijzigen (vereist een exclusieve vergrendeling bij het wijzigen van de tabel)
  • varchar – net als tekst
  • tekst – voor mij een winnaar - over (n) gegevenstypen omdat het hun problemen mist, en over varchar - omdat het een duidelijke naam heeft

Het artikel voert gedetailleerde tests uit om aan te tonen dat de prestaties van invoegingen en selecties voor alle 4 gegevenstypen vergelijkbaar zijn. Er wordt ook gedetailleerd gekeken naar alternatieve manieren om de lengte te beperken wanneer dat nodig is. Op functies gebaseerde beperkingen of domeinen bieden het voordeel van een onmiddellijke toename van de lengtebeperking, en op basis van het feit dat het verminderen van een stringlengtebeperking zeldzaam is, concludeert depesz dat een van hen meestal de beste keuze is voor een lengtelimiet.



  1. Een MariaDB-database verplaatsen naar versleutelde en niet-versleutelde toestanden

  2. DAY() Voorbeelden – MySQL

  3. MySQL CHAR() vs T-SQL CHAR():wat is het verschil?

  4. Het samenvoegen van meerdere tabellen retourneert de NULL-waarde