Ahora estoy en este punto de mi proyecto que necesito diseñar mi base de datos (Oracle). Por lo general, para las tablas de estado y de los países que no utilizan una clave primaria numérico, por ejemploNúmero VS Varchar (2) Teclas principales
STATUS (max 6)
AC --> Active
DE --> Deleted
COUNTRIES (total 30)
UK --> United Kingdom
IT --> Italy
GR --> Greece
Estas tablas son estáticos, no se actualizan mediante la aplicación y no es previsto que haber un cambio en el futuro, por lo que hay no hay posibilidad de tener problemas de actualización en tablas que usarán estos valores como claves foráneas.
La mesa principal de la aplicación utilizará el estado y el país (más de una vez por ejemplo, país de origen, el país de destino) y se prevé que 600.000 filas se añadirán al año
Así que mi pregunta es, ¿estos VARCHAR (2) las claves tendrán un impacto en el rendimiento al consultar la combinación de las 3 tablas existentes. ¿Será el primero significativamente más lento que el segundo?
SELECT m.*,
s.status_name,
c.country_name
FROM main m, status s, countries c
WHERE m.status_cd = s.status_cd
AND m.country_cd = c.country_cd
AND m.status_cd = 'AC'
AND m.country_cd = 'UK'
SELECT m.*,
s.status_name,
c.country_name
FROM main m, status s, countries c
WHERE m.status_cd = s.status_cd
AND m.country_cd = c.country_cd
AND m.status_cd = 1
AND m.country_cd = 2
Aclaración:
de estado no es binario ("max 6" al lado del nombre de la tabla). Los valores probablemente serán:
* active
* deleted
* draft
* send
* replaced
y tenemos que mostrar los valores decodificados al usuario, por lo que necesitamos los nombres.
¿Está utilizando VARCHAR2 en Oracle o VARCHAR (2)? Si usa Oracle VARCHAR2, los paréntesis son engañosos. Si VARCHAR (2), ¿por qué no CHAR (2) que generalmente es más eficiente? –