Domanda

Un vincolo univoco è un indice per impostazione predefinita? In caso contrario, un vincolo univoco ha gli stessi risultati di prestazione di una colonna indicizzata quando lo si utilizza nella clausola SELECT ... WHERE ?

Grazie

È stato utile?

Soluzione

Un vincolo univoco è necessariamente un indice. Normalmente lo definisci come "UNICO INDICE". In ogni caso sarebbe richiesto un indice per implementare in modo efficiente un vincolo univoco, quindi non avere uno svantaggio.

Altri suggerimenti

Un vincolo è in realtà molto diverso da un indice: dice solo che MySQL dovrebbe far valere l'unicità per te. Tuttavia, un indice (sebbene possa essere unico) riguarda l'ordinamento fisico sul disco rigido o le strutture aggiuntive (di solito un albero) che consentono una ricerca efficiente sulla colonna.

Potresti tuttavia confondere tutto ciò con le chiavi primarie che definiscono un indice univoco (generalmente cluster).

Un vincolo unico è un modo per esprimere il fatto che qualcosa (come una combinazione di valori di attributo) deve essere univoco nell'ambito di un'intera relazione ("tabella").

Questo è a livello di progettazione LOGICA.

Un indice è forse un mezzo utile per aiutare a imporre tale vincolo.

Questo è a livello di progettazione FISICA.

Alcuni prodotti DBMS potrebbero dedurre alcuni costrutti di progettazione fisica, come la presenza di alcuni indici, dalla presenza di determinati costrutti di progettazione logica, come un vincolo UNICO. Altri potrebbero non.

UNIQUE è in realtà un vincolo su un indice, quindi sì, UNIQUE implica che sul campo è presente un indice sul quale si applica l'unicità.

Controlla il vincolo chiave primaria prima di iniziare a utilizzare vincoli univoci.

Un vincolo di chiave primaria equivale a dichiarare un vincolo univoco e un vincolo non nullo. Se nella chiave primaria è presente più di una colonna, ogni colonna ottiene un vincolo non nullo, ma il vincolo univoco si applica a tutte le colonne prese insieme.

Quando dichiari una chiave primaria, il DBMS creerà un indice per te. Se lo desideri, puoi eliminare l'indice, ma otterrai prestazioni orribili quando il DBMS esegue scansioni delle tabelle per verificare l'univocità.

I vincoli di chiave primaria impongono l'integrità dell'entità, mentre i vincoli REFERENCES (chiave esterna) impongono l'integrità referenziale. Insieme, fanno molto per garantire l'integrità dei dati.

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