Question

Si j'ai une table avec les colonnes suivantes comme clé primaire: Username, Title, Start Date, la base de données créera automatiquement un index dessus.

  1. Si je souhaite effectuer une sélection par nom d'utilisateur et date de début d'une requête ..... utilisera-t-elle l'index ci-dessus OU dois-je spécifier un index supplémentaire?
  2. Si le titre et la date de début s'identifient de manière unique mais que j'ajoute également un nom d'utilisateur à la clé primaire, cela en ferait-il une super-clé?
Était-ce utile?

La solution

1) Si je veux sélectionner par nom d'utilisateur et date de début d'une requête ..... utilisera-t-elle l'index ci-dessus OU dois-je spécifier un index supplémentaire?

Vous avez une condition complexe, disons, comme ceci:

username = 'blah-blah-blah' AND startdate > '01.01.2010'

Si le PK de votre table est défini comme:

PRIMARY KEY (Username, Title, StartDate)

Ensuite, l'index sera utilisé pour la première partie impliquant le champ de nom d'utilisateur.Les valeurs de date de début seront évaluées dans l'ordre naturel.

Si vous voulez que l'index soit utilisé pour les deux parties d'une condition complexe, créez un index supplémentaire à la date de début ou changez l'ordre des champs dans le PK:

PRIMARY KEY (Username,  StartDate, Title)

2) Si le titre et la date de début s'identifient de manière unique, mais j'ajoute également un nom d'utilisateur à la clé primaire, cela en ferait-il une super-clé?

Il est recommandé de ne pas abuser d'un index unique avec des champs supplémentaires.Dans votre cas, créez PK sur le titre et la date de début, puis (si nécessaire) créez un index séparé sur le champ du nom d'utilisateur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top