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

bigs32
WRInaute impliqué
WRInaute impliqué
 
Messages: 517
Inscription: 8 Mai 2006

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

Message le Mer Avr 01, 2009 8:10

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


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2215
Inscription: 10 Avr 2005

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

Message le Mer Avr 01, 2009 9:54

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.

bigs32
WRInaute impliqué
WRInaute impliqué
 
Messages: 517
Inscription: 8 Mai 2006

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

Message le Mer Avr 01, 2009 10:03

dorian53 a écrit: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 ?
Dernière édition par bigs32 le Mer Avr 01, 2009 10:11, édité 1 fois.


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2215
Inscription: 10 Avr 2005

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

Message le Mer Avr 01, 2009 10:11

bigs32 a écrit:je crois que dans une table on ne peut avoir qu'une clé primaire non?

Oui c'est vrai.

bigs32 a écrit: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 écrit: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 écrit: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.

bigs32
WRInaute impliqué
WRInaute impliqué
 
Messages: 517
Inscription: 8 Mai 2006

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

Message le Mer Avr 01, 2009 10:23

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 ?


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2215
Inscription: 10 Avr 2005

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

Message le Mer Avr 01, 2009 10:37

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.

bigs32
WRInaute impliqué
WRInaute impliqué
 
Messages: 517
Inscription: 8 Mai 2006

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

Message le Mer Avr 01, 2009 19:22

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 .


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités