Je suis maintenant à ce point de mon projet que j'ai besoin de concevoir ma base de données (Oracle). Habituellement, pour le statut et les pays tables, je ne pas utiliser une clé primaire numérique, par exempleNuméro VS Varchar (2) Clés primaires
STATUS (max 6)
AC --> Active
DE --> Deleted
COUNTRIES (total 30)
UK --> United Kingdom
IT --> Italy
GR --> Greece
Ces tables sont statiques, pas mis à jour par l'application et il est pas prévu être le changement dans l'avenir donc il est aucune chance d'avoir des problèmes de mise à jour dans les tables qui utiliseront ces valeurs comme clés étrangères.
Le tableau principal de l'application utilisera le statut et le pays (plus d'une fois par exemple, pays d'origine, pays de destination) et il est prévu que 600000 lignes seront ajoutées par an
Donc ma question est, ce que ces VARCHAR (2) les clés auront un impact sur la performance lors de l'interrogation de la jointure de 3 tables. Le premier sera-t-il significativement plus lent que le second?
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
Clarification:
état est non binaire ("max 6" à côté du nom de la table). Les valeurs seront probablement:
* active
* deleted
* draft
* send
* replaced
et nous devons afficher les valeurs décodées à l'utilisateur, donc nous avons besoin des noms.
Utilisez-vous VARCHAR2 dans Oracle ou VARCHAR (2)? Si vous utilisez Oracle VARCHAR2, les parenthèses sont trompeuses. Si VARCHAR (2), alors pourquoi pas CHAR (2) qui est généralement plus efficace. –