Ne faire une clé primaire sur plusieurs colonnes générer les index pour chacun d'eux?
Si j'ai mis une clé primaire sur plusieurs colonnes dans Oracle, dois-je aussi besoin de créer l'index si j'ai besoin d'eux?
Je crois que lorsque vous définissez une clé primaire sur un colonne, vous l'avez indexé par elle; est-il le même avec plusieurs colonne PKs?
Grâce
OriginalL'auteur juan | 2009-02-10
Vous devez vous connecter pour publier un commentaire.
Non, les index ne seront pas créés pour les champs individuels.
Si vous avez un composit clé FieldA, FieldB, FieldC et vous
ou
Puis il va utiliser cet indice (parce qu'ils sont les deux premiers champs de la clé)
Si vous avez
Où vous êtes en utilisant des pièces de l'index, mais pas la totalité de l'index, l'index sera utilisé de manière moins efficace par le biais d'un indice de passer l'analyse, pleine d'analyse d'index, ou rapide analyse d'index.
(Merci à David Aldridge pour la correction)
OriginalL'auteur Binary Worrier
Si vous créer une clé primaire sur les colonnes (A, B, C) puis Oracle par défaut, créer un index unique sur (A, B. C). Vous pouvez dire à Oracle pour en utiliser un autre (pas forcément unique) index existant comme ceci:
OriginalL'auteur Tony Andrews
Vous obtiendrez un index sur plusieurs colonnes, ce qui n'est pas la même chose que d'avoir un index sur chaque colonne.
OriginalL'auteur Darron
Clé primaire suppose la création d'un
composite unique index
sur les colonnes de clé primaire.Vous pouvez utiliser un chemin d'accès spécifique appelé
INDEX SKIP SCAN
d'utiliser cet indice avec des prédicats qui ne comprennent pas la première colonne indexée:OriginalL'auteur Quassnoi
Une clé primaire n'est qu'un (unique) de l'index, contenant éventuellement plusieurs colonnes
OriginalL'auteur tehvan
Pour B sélectionnez index sera utilisé si la colonne ont un faible cardinalité (par exemple, une n'a que 2 valeurs).
En général, vous pourriez avoir deviné cette réponse si vous imaginé que les colonnes sont pas indexés séparément, mais indexés concaténation des colonnes (c'est pas complètement vrai, mais il travaille pour première approximation).
Il n'est donc pas une, l'indice b c'est plus comme a||b index.
OriginalL'auteur
Vous devrez peut-être définir des index sur les colonnes en fonction de votre clé primaire de la structure.
Les clés primaires composites et l'index de créer des index de la manière suivante. Dire que j'ai des colonnes A, B, C et j'ai créer une clé primaire sur (A, B, C). Ainsi, dans l'index
Oracle crée un index sur un de gauche de la plupart des regroupements de colonne. Donc... Si vous voulez un index sur la colonne B, vous devrez en créer un pour elle aussi bien que la clé primaire.
P. S. je sais que MySQL première exposition de cette la plus à gauche de comportement et je pense que SQL Server est également la plus à gauche
Un index sur (A, B, C) peut facilement être utilisé par une requête qui n'a qu'Une clause where. Oracle utilisée pour exiger "plus à gauche" l'utilisation d'un indice, mais les versions plus récentes peuvent ignorer l'extrême gauche comme d'autres l'ont noté.
OriginalL'auteur Alex
Dans Oracle, qui n'est pas une déclaration exacte. Il crée seulement 1 index sur (A,B,C). Ne créez pas de (A,B) et (A) index.
OriginalL'auteur Srav