soporta segundo por optimizar lentas existing ejemplo cuantas create consultas column sql primary-key foreign-key-relationship postgresql-9.1 sqldatatypes

sql - segundo - Clave primaria como texto



set identity sql server (1)

Las ventajas que tiene para elegir un tipo de datos de carácter como un campo de clave principal es que puede elegir qué datos pueden mostrar. Como ejemplo, podría tener la dirección de correo electrónico como el campo clave para una tabla de usuarios. El elimina la necesidad de una columna adicional. Otra ventaja es que si tiene una tabla de datos común que contiene índices de otras tablas múltiples (piense en una tabla NOTES con una referencia externa a las tablas FINANCE, CONTACT y ADMIN), puede saber fácilmente de qué tabla provino (por ejemplo, su tabla FINANCE). tiene un índice de F00001, la tabla CONTACTO tiene un índice de C00001, etc.). Me temo que las desventajas serán más grandes en esta respuesta, ya que estoy en contra de este enfoque.

Las desventajas son las siguientes:

  1. El tipo de datos en serie existe exactamente por este motivo en PostgreSQL
  2. Los índices numéricos se ingresarán en orden y se deberá realizar una reindexación mínima (es decir, si tiene una tabla con las teclas Apple, Zanahoria y desea insertar Banana, la tabla tendrá que moverse alrededor de los índices para que Banana se inserte en el centro . Rara vez se insertarán datos en medio de un índice si el índice es numérico.
  3. Los índices numéricos no vinculados a los datos no van a cambiar.
  4. Los índices numéricos son más cortos y su longitud puede ser fija (4 bytes frente a lo que elija como su longitud varchar).

En su caso, aún puede poner una clave externa en un índice numérico, por lo que no estoy seguro de por qué querría forzarla a ser de tipo varchar. La búsqueda y el filtrado en un campo numérico es teóricamente más rápido que un campo de texto, ya que el servidor se verá obligado a convertir los datos primero. En general, tendría una clave principal numérica que no está agrupada y luego creará una clave agrupada en su columna de datos que va a filtrar mucho.

Esos son estándares generales cuando se escribe SQL, pero cuando se trata de la evaluación comparativa, solo encontrará que las columnas varchar son un poco más lentas para unir y filtrar que las columnas enteras. Mientras sus claves primarias no cambien NUNCA, entonces estará bien.

En el curso de bases de datos que realicé durante mi educación (hace aproximadamente 4 años), pensé que se recomienda evitar el uso de cadenas de caracteres como tipo de datos de la clave principal.

¿Alguien puede decirme cuáles son los pros y los contras de elegir un tipo de datos que varía según el carácter para la clave principal en SQL y cuánto es cierta la premisa anterior?

NB: (Estoy usando la base de datos PostgreSQL ). También estoy lidiando con una situación en la que necesita hacer referencia a una tabla de este tipo desde otra, por lo tanto, poner una clave externa en el tipo de datos que varían según el carácter . Por favor, tenga en cuenta que también.