2008-12-08 5 views
9

¿Qué diseño cree que se ejecuta más rápido en PostgreSQL?En PostgreSQL, ¿es más rápido incluir columnas TEXT en la misma tabla, en lugar de una tabla separada?

  1. Hacer una mesa 15 de la columna de varchars y similares, pero poniendo todas las columnas de texto en una tabla separada con un enlace de tecla f de nuevo a esta tabla. Imaginemos que desea buscar el registro con ID de "4", pero luego retire todas las filas, incluida la información de las columnas TEXT de la tabla unida. E imaginemos que las tablas tienen 500,000 filas.

  2. Hacer una tabla de 15 columnas de varchar y similares, e incluir sus columnas de TEXTO en la misma tabla. De nuevo, imagine lo mismo que arriba: tome la identificación del registro 4 y extraiga el registro completo, y hay 500,000 filas en la tabla.

Es decir, en la mayoría de las bases de datos, la manera en que yo entiendo, cuando bajas a la capa física de cómo funcionan esas columnas TEXT, mantienen una pequeña Identificación realidad en la columna de la tabla en cada fila, y esa ID va a un bloque de página exclusivo y diferente (u otra nomenclatura) en la base de datos. Entonces, para mí, parecería que la opción B funcionaría más rápido porque no hay necesidad de la sobrecarga de la unión fkey, y debido a que las columnas TEXT no están ocupando más que un espacio entero en esa columna en esa tabla dada, y ese entero es una clave en la base de datos para un bloque de página en otro lugar.

Respuesta

3

(B) es correcto, por la razón dada en la pregunta en sí.

16

PostgreSQL no maneja las columnas TEXT de la misma forma que otros DBMS.

Desde sus documentos:

Consejo: No hay diferencias de rendimiento entre estos tres tipos, aparte del aumento de tamaño de almacenamiento cuando se utiliza el tipo rellenada con blancos, y unos pocos ciclos extra para comprobar la longitud al almacenar en una columna de longitud limitada. Si bien el carácter (n) tiene ventajas de rendimiento en algunos otros sistemas de bases de datos, no tiene tales ventajas en PostgreSQL. En la mayoría de las situaciones, se debe usar texto o caracteres en su lugar.

Check out the manual

+0

+1 para desenterrar la frase exacta que iba a hacer cuando leí la pregunta! – some

Cuestiones relacionadas