Domanda

Se ho una tabella con le seguenti colonne come chiave primaria: Username, Title, Start Date, quindi il database creerà automaticamente un indice su di esso.

  1. Se voglio selezionare per nome utente e la data di inizio per una query ..... userà l'indice sopra o devo specificare un indice aggiuntivo?
  2. Se il titolo e la data di inizio si identificano in modo univoco, ma aggiungo anche nome utente alla chiave primaria, questo lo renderebbe un superkey?
È stato utile?

Soluzione

1) Se voglio selezionare per nome utente e la data di inizio per una query ..... userà l'indice sopra o devo specificare un indice aggiuntivo?

Hai una condizione complessa, diciamo, in questo modo:

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

Se il PK del tuo tavolo definito come:

PRIMARY KEY (Username, Title, StartDate)

Quindi l'indice verrà utilizzato per la prima parte che coinvolge il campo nome utente. I valori di startDate saranno valutati in ordine naturale.

Se si desidera utilizzare l'indice per entrambe le parti della condizione complessa, creare un indice aggiuntivo su StartDate o modificare l'ordine dei campi nel PK:

PRIMARY KEY (Username,  StartDate, Title)

2) Se il titolo e la data di inizio si identificano in modo univoco, ma aggiungo anche nome utente alla chiave primaria, questo lo renderebbe un superkey?

È una buona pratica non abusare di un indice unico con campi aggiuntivi. Nel tuo caso, crea PK sul titolo e la data di inizio e quindi (se necessariamente) crea un indice separato sul campo Nome utente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top