différence entre primary key , clé index unique et clé index .

  • Auteur de la discussion Auteur de la discussion bigs32
  • Date de début Date de début
WRInaute occasionnel
J'aimerais optimiser mes requetes SQL mais avnt tout j'aimerais bien voir la différence entre primary key , clé index unique et clé index .
quel serait l'intérêt d'affecter un champ à clé index ou clé index unique ou primary key au niveau de la performance du serveur SQL.
avez vous des expériences dans ce domaine

merci
 
WRInaute passionné
Salut,

Primary key
Index + Unique (sans NULL)

Index
Le champ indexé.
Cela signifie qu'il est stocké et organisé par la base de données (donc plus gourmand en écriture).
Cela permet à la base de données de retrouver plus rapidement une information.
Il existe différent type d'index, la base de données utilisera différentes méthodes pour retrouver l'information.
Pour te donner une image, c'est comme un sommaire au début d'un livre ou l'on retrouve des chapitres.
Ils peuvent être organisé par ordre alphabétique ou par catégories (sport, nature, ...)

Unique
Ce champ est également indexé (voir ci dessus).
C'est un champ qui a pour contrainte d'être (comme son nom l'indique) unique, il ne peut pas y avoir 2 fois la même valeur dans la table.
Donc presque qu'une primary key SAUF QUE... la valeur NULL est autorisée.
 
WRInaute occasionnel
dorian53 a dit:
Salut,

Primary key
Index + Unique (sans NULL)

Index
Le champ indexé.
Cela signifie qu'il est stocké et organisé par la base de données (donc plus gourmand en écriture).
Cela permet à la base de données de retrouver plus rapidement une information.
Il existe différent type d'index, la base de données utilisera différentes méthodes pour retrouver l'information.
Pour te donner une image, c'est comme un sommaire au début d'un livre ou l'on retrouve des chapitres.
Ils peuvent être organisé par ordre alphabétique ou par catégories (sport, nature, ...)

Unique
Ce champ est également indexé (voir ci dessus).
C'est un champ qui a pour contrainte d'être (comme son nom l'indique) unique, il ne peut pas y avoir 2 fois la même valeur dans la table.
Donc presque qu'une primary key SAUF QUE... la valeur NULL est autorisée.
je crois que dans une table on ne peut avoir qu'une clé primaire non?
pour ne pas se prendre la tete et éviter des bugs éventuels du serveur mysql mieux vaut mettre que des clé index tout court non? a mon avis ca doit prendre plus de place en mémoire par rapport à une clé unique ou clé primaire non?
est t'il dangereux de mettre beaucoup d'index dans une table ?
y a t'il un risque que la base ne marche plus du tout ?
 
WRInaute passionné
bigs32 a dit:
je crois que dans une table on ne peut avoir qu'une clé primaire non?
Oui c'est vrai.

bigs32 a dit:
pour ne pas se prendre la tete et éviter des bugs éventuels du serveur mysql mieux vaut mettre que clé index tout court non?
Non, une clé primaire a une notion particulière. Elle permet d'identifier distinctement un enregistrement.

bigs32 a dit:
c'est dangereux de mettre beaucoup d'index dans une table ?
Non, en revanche plus il y en a, plus le temps d'écriture est long.
À l'inverse la rechercher est plus rapide.

bigs32 a dit:
y a t'il un risque que la base ne marche plus du tout ?
Non. Si l'on prend le cas de l'index unique, ca ajoute une couche d'intégrité en plus a tes données.
Par exemple, tu es sûr qu'une référence n'est affectée qu'à un seul de tes produits ou qu'un email = utilisateur.
 
WRInaute occasionnel
Non, en revanche plus il y en a, plus le temps d'écriture est long.
À l'inverse la rechercher est plus rapide.
tu veux parler de la fonction insert ou update qui va prendrer du temps?
si on fait un arbitrage mieux une recherche plus rapide meme si c'est un insert ou update plus long ?
 
WRInaute passionné
Tout dépend de l'application qui tourne derrière.

Une table de log peut écrire 4 enregistrements à la seconde et être consultée seulement 1 fois par mois en cas de problème.
Une table de produit peut être consultée 4 fois par seconde et être alimentée 1 fois par mois en cas de ré-approvisionnement des stocks.
 
WRInaute occasionnel
merci dorian pour tes réponses concises .Je vais en rajouter pas mal d'index pour voir .
S'il y a un souci je peux toujours enlever l'index , je pense qu'il n'y aura pas de souci .
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut