Optimiser mes tables

Résolu
DesTunK Messages postés 361 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'ai une question toute simple dont je n'ai pas la réponse ^^'
Je bosse sur une BDD et je dois l'optimiser au maximum.

Je voulais savoir si il était préférable de mettre en clé primaire :
- utiliser la clé de base varchar(15) (login par exemple) car le nom de l'attribut est unique
ou bien
- ajouter un int autoincrémenter pour créer une clé qui remplace le login

Car je vais référencer cette clé primaire ensuite dans une autre table en clé étrangère.

Je vais donc avoir 4*nblignesPK octets en plus sur ma table de base, mais je vais économiser (16-4)*nblignesFK sur ma table en clé étrangère.

Est-ce que mon raisonnement est bon ?

Cordialement :)
A voir également:

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,
Il est préférable (en terme de performances) de manipuler des clés numériques au lieu de varchar.
Donc oui.. mettre un ID auto-incréménté est préférable ..

1
DesTunK Messages postés 361 Date d'inscription   Statut Membre Dernière intervention   157
 
Merci beaucoup, je bloquais la dessus car c'est une question qui semble rajouté des informations au premier avis.

Par contre, comment faire pour ne pas perdre l'unicité.

Car mettre un id au lieu d'un varchar en clé primaire permet maintenant d'avoir le varchar plusieurs fois dans la base avec un ID différent.
Il s'agit de faire une vérification à partir de mon PHP du coup ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > DesTunK Messages postés 361 Date d'inscription   Statut Membre Dernière intervention  
 
Tu peux le gérer en PHP en effet...
ET tu peux aussi mettre ton champ varchar en UNIQUE pour empêcher de mauvaises manip.
0
DesTunK Messages postés 361 Date d'inscription   Statut Membre Dernière intervention   157
 
J'y avais pas pensé, c'est vrai que ça fonctionne comme ça aussi !

En tout cas, merci beaucoup !
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
0