Partage
  • Partager sur Facebook
  • Partager sur Twitter

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

28 novembre 2010 à 14:02:06

Hi,

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
  • Partager sur Facebook
  • Partager sur Twitter
28 novembre 2010 à 14:38:54

La clé primaire, c'est ce qui détermine une entrée de ta table (généralement un id) après pour ce qui est des index, ça te permet de faire des recherches plus rapidement. Par exemple sur une table de membres, il y a de fortes chances que tu fasses une recherche sur les pseudos. Tu peux donc mettre un index sur les pseudos, ça accélérera la recherche sur ce champ. Après pour ce qui est unique, en gardant mon exemple, normalement, tu veux que les pseudos des membres soient uniques. Donc tu peux le spécifier. Ça empêchera d'avoir deux même avec le même pseudo en cas d'erreur de ton script php.
  • Partager sur Facebook
  • Partager sur Twitter
29 novembre 2010 à 9:07:59

bonjour,
outre la réponse de Debian - une clé primaire identifie l'enregistrement, un index sert d'accélérateur, un champ unique correspond à une clé candidate - la plupart des SGBDR possède la commande EXPLAIN qui permet d'y voir plus clair pour trouver des solutions d'optimisation.
  • Partager sur Facebook
  • Partager sur Twitter
29 novembre 2010 à 19:24:37

Si les pseudos des membres sont uniques, je vois mal l'intérêt de mettre un index dessus. Ou alors y'a un truc qui m'échappe.
  • Partager sur Facebook
  • Partager sur Twitter
29 novembre 2010 à 20:02:36

Justement à faire en sorte que la requête s'exécute plus vite quand on fait une recherche dessus.
  • Partager sur Facebook
  • Partager sur Twitter
30 novembre 2010 à 1:25:28

Citation : rotoclap

Si les pseudos des membres sont uniques, je vois mal l'intérêt de mettre un index dessus. Ou alors y'a un truc qui m'échappe.



Si une colonne doit être unique, on met obligatoirement une contrainte UNIQUE dessus (sinon, elle n'est pas unique). C'est implémenté sous forme d'un index.
  • Partager sur Facebook
  • Partager sur Twitter
30 novembre 2010 à 21:46:02

Accessoirement, une clé primaire est un champ unique et indexé... Obligatoirement ;)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
30 novembre 2010 à 22:36:09

Il faut distinguer les notions de clés et d'index.
Ça n'a rien à voir. Niveau logique vs niveau physique.

Certes malheureusement les SGBDR implémentes les contraintes d'unicité sous forme d'index, mais il ne faut pas confondre les deux....
  • Partager sur Facebook
  • Partager sur Twitter
12 mai 2021 à 15:59:42

slash-dev a écrit:

La clé primaire, c'est ce qui détermine une entrée de ta table (généralement un id) après pour ce qui est des index, ça te permet de faire des recherches plus rapidement. Par exemple sur une table de membres, il y a de fortes chances que tu fasses une recherche sur les pseudos. Tu peux donc mettre un index sur les pseudos, ça accélérera la recherche sur ce champ. Après pour ce qui est unique, en gardant mon exemple, normalement, tu veux que les pseudos des membres soient uniques. Donc tu peux le spécifier. Ça empêchera d'avoir deux même avec le même pseudo en cas d'erreur de ton script php.


merci
  • Partager sur Facebook
  • Partager sur Twitter
12 mai 2021 à 22:21:25

@Futur__Dev Bonjour, pour dire merci pas la peine de déterrer un sujet, vous avez la possibilité de cliquer sur les pouces levés des messages qui vous ont aidés.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter