Optimiser mes tables

Résolu/Fermé
DesTunK Messages postés 360 Date d'inscription dimanche 27 janvier 2013 Statut Membre Dernière intervention 24 février 2016 - Modifié par DesTunK le 27/04/2015 à 16:14
jordane45 Messages postés 38173 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mai 2024 - 27 avril 2015 à 16:56
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 38173 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mai 2024 4 665
27 avril 2015 à 16:15
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 360 Date d'inscription dimanche 27 janvier 2013 Statut Membre Dernière intervention 24 février 2016 157
27 avril 2015 à 16:21
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 38173 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mai 2024 4 665 > DesTunK Messages postés 360 Date d'inscription dimanche 27 janvier 2013 Statut Membre Dernière intervention 24 février 2016
27 avril 2015 à 16:29
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 360 Date d'inscription dimanche 27 janvier 2013 Statut Membre Dernière intervention 24 février 2016 157
27 avril 2015 à 16:48
J'y avais pas pensé, c'est vrai que ça fonctionne comme ça aussi !

En tout cas, merci beaucoup !
0
jordane45 Messages postés 38173 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mai 2024 4 665
27 avril 2015 à 16:56
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