sql >> Base de Datos >  >> RDS >> PostgreSQL

Diferencia entre texto y varchar (carácter variable)

No hay diferencia, debajo del capó todo es varlena (matriz de longitud variable).

Consulte este artículo de Depesz:http://www.depesz.com/index.php/2010/03/02/charx-vs-varcharx-vs-varchar-vs-text/

Un par de aspectos destacados:

Para resumirlo todo:

  • char(n) – ocupa demasiado espacio cuando se trata de valores más cortos que n (los rellena a n ) y puede dar lugar a errores sutiles debido a la adición de espacios finales, además es problemático cambiar el límite
  • varchar(n):es problemático cambiar el límite en el entorno en vivo (requiere un bloqueo exclusivo al modificar la tabla)
  • varchar:como texto
  • texto:para mí un ganador – sobre (n) tipos de datos porque carece de sus problemas, y sobre varchar – porque tiene un nombre distinto

El artículo realiza pruebas detalladas para mostrar que el rendimiento de las inserciones y selecciones para los 4 tipos de datos es similar. También analiza detalladamente las formas alternativas de restringir la longitud cuando sea necesario. Las restricciones o dominios basados ​​en funciones brindan la ventaja de un aumento instantáneo de la restricción de longitud y, dado que la disminución de una restricción de longitud de cadena es poco común, depesz concluye que uno de ellos suele ser la mejor opción para un límite de longitud.