No
con PostgreSQL, desde the manual:
valores muy largos también se almacenan en tablas de fondo de manera que no interfieran con el rápido acceso a los valores de las columnas más cortas.
Así que una columna de caracteres de gran tamaño (como TEXT
o VARCHAR
sin límite de tamaño especificado) se almacena lejos de los principales datos de la tabla. Por lo tanto, PostgreSQL tiene incorporada su optimización de "ponerlo en una tabla separada". Si está utilizando PostgreSQL, organice su tabla de forma sensata y deje el diseño de los datos en PostgreSQL.
No sé cómo MySQL u otras RDBM arreglan sus datos.
La razón detrás de esta optimización es que la base de datos generalmente mantendrá los datos de cada fila en bloques contiguos en el disco para reducir la búsqueda cuando la fila necesita ser leída o actualizada. Si tiene una columna TEXTO (u otro tipo de longitud variable) en una fila, entonces el tamaño de la fila es variable, por lo que se necesita más trabajo para ir de una fila a otra. Una analogía sería la diferencia entre acceder a algo en una lista vinculada en lugar de acceder a una matriz; con una lista enlazada, tiene que leer tres elementos de uno en uno para llegar al cuarto, con una matriz que acaba de compensar 3 * element_size
bytes desde el principio y está allí en un solo paso.