Quando devo usare KEY
, PRIMARY KEY
, UNIQUE KEY
e INDEX
?
Quando devo usare KEY
, PRIMARY KEY
, UNIQUE KEY
e INDEX
?
Risposte:
KEY
e INDEX
sono sinonimi in MySQL. Intendono la stessa cosa. Nei database utilizzeresti gli indici per migliorare la velocità di recupero dei dati. Un indice è in genere creato su colonne utilizzate in JOIN
, WHERE
e ORDER BY
le clausole.
Immagina di avere una tabella chiamata users
e di cercare tutti gli utenti che hanno il cognome "Smith". Senza un indice, il database dovrebbe passare attraverso tutti i record della tabella: questo è lento, perché più record hai nel tuo database, più lavoro deve fare per trovare il risultato. D'altro canto, un indice consentirà al database di passare rapidamente alle pagine pertinenti in cui sono conservati i record "Smith". Questo è molto simile a come noi, umani, passiamo attraverso una directory della rubrica per trovare qualcuno con il cognome: non iniziamo a cercare nella directory da una copertina all'altra, finché abbiamo inserito le informazioni in un ordine che possiamo usare per saltare rapidamente alle pagine "S".
Le chiavi primarie e le chiavi univoche sono simili. Una chiave primaria è una colonna, o una combinazione di colonne, che può identificare in modo univoco una riga. È un caso speciale di chiave unica . Una tabella può avere al massimo una chiave primaria, ma più di una chiave univoca. Quando si specifica una chiave univoca su una colonna, nessuna riga distinta in una tabella può avere lo stesso valore.
Si noti inoltre che le colonne definite come chiavi primarie o chiavi univoche vengono automaticamente indicizzate in MySQL.
passengers
con i seguenti campi :, (id, first_name, last_name, age, passport_number)
normalmente imposti la id
colonna come chiave primaria. Una chiave primaria è automaticamente una chiave univoca. La differenza principale è che è possibile avere solo una chiave primaria nella tabella e che la colonna non può contenere NULL
valori. Non è necessario impostare la id
colonna UNIQUE
perché, impostandola su una chiave primaria, si garantisce automaticamente che sia unica ... Quindi è possibile impostare anche passport_number
in UNIQUE
modo che non più di un passeggero ...
NULL
in quella colonna, senza problemi.
KEY e INDEX sono sinonimi.
È necessario aggiungere un indice quando le misurazioni delle prestazioni e EXPLAIN mostrano che la query è inefficiente a causa di un indice mancante. L'aggiunta di un indice può migliorare le prestazioni delle query (ma può rallentare le modifiche alla tabella).
È necessario utilizzare UNIQUE quando si desidera che i valori in quella colonna (o colonne) siano univoci, in modo che i tentativi di inserire valori duplicati generino un errore.
Un PRIMARY KEY è sia un vincolo univoco che implica anche che la colonna NON sia NULL. È usato per dare un'identità ad ogni riga. Ciò può essere utile per unire un'altra tabella tramite un vincolo di chiave esterna. Sebbene non sia necessario che una tabella abbia una CHIAVE PRIMARIA, di solito è una buona idea.
La chiave primaria non consente i NULL
valori, ma la chiave univoca consente i NULL
valori.
Possiamo dichiarare solo una chiave primaria in una tabella, ma una tabella può avere più chiavi univoche (assegnazione di colonna).
PRIMARY KEY
E UNIQUE KEY
sono simili tranne che ha funzioni diverse. La chiave primaria rende unica la riga della tabella (ovvero, non ci possono essere 2 righe con la stessa chiave esatta). È possibile avere solo 1 chiave primaria in una tabella del database.
La chiave univoca rende unica la colonna della tabella in una riga della tabella (ovvero, nessuna riga di 2 tabelle può avere lo stesso valore esatto). Puoi avere più di 1 colonna di tabella chiavi univoca (a differenza della chiave primaria che significa che solo 1 colonna di tabella nella tabella è unica).
INDEX
crea anche unicità. MySQL (esempio) creerà una tabella di indicizzazione per la colonna indicizzata. In questo modo, è più semplice recuperare il valore della riga della tabella quando la query viene interrogata su quella colonna della tabella indicizzata. Lo svantaggio è che se si eseguono molti aggiornamenti / eliminazioni / creazioni, MySQL deve gestire le tabelle di indicizzazione (e questo può essere un collo di bottiglia delle prestazioni).
Spero che questo ti aiuti.
UNIQUE KEY
può essere NULL
ma PRIMARY KEY
non può essere NULL
.
Tasti univoci: le colonne in cui non sono simili due righe
Chiave primaria: raccolta del numero minimo di colonne che può identificare in modo univoco ogni riga di una tabella (ovvero che non ci sono due righe simili in tutte le colonne che costituiscono la chiave primaria). In una tabella possono essere presenti più chiavi primarie. Se esiste una chiave univoca, allora è la chiave primaria (non "la" chiave primaria) nella tabella. Se non esiste una chiave univoca, saranno necessari più valori di una colonna per identificare una riga come (first_name, last_name, father_name, mother_name) in alcune tabelle può costituire la chiave primaria.
Indice: utilizzato per ottimizzare le query. Se hai intenzione di cercare o ordinare i risultati sulla base di alcune colonne più volte (ad es. La maggior parte delle persone cercherà gli studenti per nome e non per il loro numero di rotolo), allora può essere ottimizzato se i valori della colonna sono tutti " indicizzato "ad esempio con un algoritmo ad albero binario.
Chiave primaria : possiamo mettere solo una chiave primaria su una tabella in una tabella e non possiamo lasciare vuota quella colonna quando inseriamo i valori nella tabella.
Chiave univoca: possiamo inserire più di una chiave univoca in una tabella e possiamo lasciare vuota quella colonna quando inseriamo i valori nella tabella. colonna accetta valori univoci (non uguali) quando abbiamo applicato la chiave primaria e unica.
La chiave primaria viene utilizzata per lavorare con tabelle diverse. Questa è la base dei database relazionali. Se hai un database di libri è meglio creare 2 tabelle - 1) libri e 2) autori con chiave primaria INT "id". Quindi usi id nei libri anziché nel nome degli autori.
La chiave univoca viene utilizzata se non si desidera avere voci ripetute. Ad esempio, potresti avere il titolo nella tabella del tuo libro e vuoi essere sicuro che ci sia una sola voce per ogni titolo.
Chiave unica:
Chiave primaria