Optimiser mes tables

Résolu
DesTunK Messages postés 392 Statut Membre -  
jordane45 Messages postés 30427 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 :)

1 réponse

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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
    1. DesTunK Messages postés 392 Statut Membre 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
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > DesTunK Messages postés 392 Statut Membre
         
        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
    2. DesTunK Messages postés 392 Statut Membre 157
       
      J'y avais pas pensé, c'est vrai que ça fonctionne comme ça aussi !

      En tout cas, merci beaucoup !
      0
    3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      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