2010-07-22 5 views
0

J'ai une question concernant la conception de la base de données.Rechercher Tableau et utilisation de la clé primaire

J'ai une table entité nommée: CARS et J'ai une table de consultation nommée: COULEURS

Tableau CARS: Id, Nom et Table COULEURS a juste: colorName

Tableau COULEURS a une courte liste de couleurs, CARS pourrait avoir une longue liste d'entités.

CARS possède une clé primaire sur l'ID.

Mes questions sont les suivantes:

  • Ajout d'une clé primaire sur table de consultation COULEURS sur colorName, pourrait améliorer la performance?

La table CARS aura un INDEX groupé sur ID.

  • Prendriez-vous le sens ont un index clusterisé sur CARS sur colorName Merci gus pour votre temps!

Répondre

2

Les index clusterisés peuvent augmenter la vitesse de récupération ou d'insertion, mais uniquement lorsque les données sont récupérées ou mises à jour/insérées dans l'ordre correspondant à l'ordre de l'index.

Sinon, cela peut diminuer les performances.

Pour une réponse plus détaillée, la question doit être plus spécifique.

2

C'est un peu étrange. Vous souhaitez que la table COLORS ait ColorID et ColorName, avec l'index cluster sur ColorID et une clé étrangère sur la table CARS. Si je comprends bien.

0

1 - Si COULEURS est un tableau court, il peut améliorer les performances mais ne sera probablement pas vraiment perceptible. 2 - Vous ne pouvez avoir qu'un seul index en cluster, et il est plus logique d'utiliser les informations limitées que vous avez données pour qu'il soit sur l'ID. Vous aurez des entrées en double dans ColorName. Pourquoi ne pas changer Colorname en ColorId, ajouter une colonne ID à Colors et l'utiliser comme un index cluster/clé primaire?

+0

Merci JNKyle, COLORS devrait être une table de recherche et j'ai besoin de chaque couleur avec une valeur unique. Si je comprends bien votre message, ID Column sur COLORS ne me conviendrait pas. Dans ce cas, l'index clusterisé sera uniquement sur ColorName ... pensez-vous que cela pourrait être une solution appropriée? merci – GibboK

+0

Si c'est la seule colonne dans COLORS cela fonctionnerait. Il me semble plus logique d'avoir un identifiant associé à la couleur pour économiser de l'espace dans la table principale. Au lieu d'un nom de couleur de 12 bits ou de n'importe quelle longueur dans ce champ, vous avez un colorID 1 ou 2 bits. – JNK

+0

Je n'avais pas pensé à économiser de l'espace dans la table principale, bon point! Je vais garder en considération merci encore une fois! – GibboK