Meilleur auteur de réponses
Clé primaire & index

Question
-
Bonjour à tous,
Quelques questions concernant les clés primaires et les index
- sur une table ayant une clé primaire sur une seule colonne, faut t'il créer un index, ou le fait d'avoir une clé primaire sous entend automatiquement index???
- sur une table ayant une clé composite, même question car j'ai lu que dans le cas de recherche sur une seule colonne composant la clé composite, il est bénéfique de mettre un index sur la colonne spécifique.
- dans une table ayant une clé étrangère, cette dernière est-elle indexée automatiquement (de la même façon qu'elle l'est dans sa table d'origine) ou faut-il créer un index??
D'avance merçi pour votre aide.
@+
Réponses
-
Bonjour,
Par défaut sur SQL Server lorsque vous créez une clé primaire un index est également créé. (Ne serait ce que pour la vérification d'unicité).
Pour une clé composite, tout dépend les recherches effectuées. L'ordre de création a ici son importance car un index est vectorisé.
Admettons que vous ayez un index du genre (nom,prenom). Si vos recherches ne concernent uniquement que les prénoms, l'index de votre clé composite ne sera pas utilisé et il faudra alors créer un index sur votre colonne prénom. La création d'un index supplémentaire sur une clé composite se fait parfois pour des questions de performance. Si votre clé composite concerne plusieurs colonnes de grande taille, la recherche dans l'index sera beaucoup moins performante qu'avec un index ne concernant qu'un mimimum de colonnes.
Les clés étrangères ne sont pas automatiquement indexés et je dirais que ceci est tout à fait normal. Même si dans la plupart des cas la création d'un index est justifié pour des relations avec des cardinalités de type 1 à plusieurs elle ne l'est pas forcement pour des relations avec des cardinalités de type plusieurs à plusieurs. La création automatique d'index dans ce cas engendrerait des index inutiles.
++
MCDBA | MCITP SQL Server 2005 | MCTS SQL Server 2008 | LPI Linux 1- Proposé comme réponse Papy Normand vendredi 28 août 2009 22:23
- Marqué comme réponse AMDMAN_fr samedi 29 août 2009 07:36
Toutes les réponses
-
Bonjour,
Par défaut sur SQL Server lorsque vous créez une clé primaire un index est également créé. (Ne serait ce que pour la vérification d'unicité).
Pour une clé composite, tout dépend les recherches effectuées. L'ordre de création a ici son importance car un index est vectorisé.
Admettons que vous ayez un index du genre (nom,prenom). Si vos recherches ne concernent uniquement que les prénoms, l'index de votre clé composite ne sera pas utilisé et il faudra alors créer un index sur votre colonne prénom. La création d'un index supplémentaire sur une clé composite se fait parfois pour des questions de performance. Si votre clé composite concerne plusieurs colonnes de grande taille, la recherche dans l'index sera beaucoup moins performante qu'avec un index ne concernant qu'un mimimum de colonnes.
Les clés étrangères ne sont pas automatiquement indexés et je dirais que ceci est tout à fait normal. Même si dans la plupart des cas la création d'un index est justifié pour des relations avec des cardinalités de type 1 à plusieurs elle ne l'est pas forcement pour des relations avec des cardinalités de type plusieurs à plusieurs. La création automatique d'index dans ce cas engendrerait des index inutiles.
++
MCDBA | MCITP SQL Server 2005 | MCTS SQL Server 2008 | LPI Linux 1- Proposé comme réponse Papy Normand vendredi 28 août 2009 22:23
- Marqué comme réponse AMDMAN_fr samedi 29 août 2009 07:36
-