FOREIGN KEYS assicurati solo che i tuoi dati siano coerenti.
Non migliorano le query in termini di efficienza, semplicemente fanno fallire alcune query sbagliate.
Se hai una relazione come questa:
CREATE TABLE department (id INT NOT NULL)
CREATE TABLE employee (id INT NOT NULL, dept_id INT NOT NULL, FOREIGN KEY (dept_id) REFERENCES department(id))
, quindi non è possibile eliminare a departmentse ne ha alcuni employee.
Se si fornisce ON DELETE CASCADEla FOREIGN KEYdefinizione, le righe di riferimento verranno eliminate automaticamente insieme a quelle di riferimento.
Come vincolo, in FOREIGN KEYrealtà rallenta un po 'le query.
È necessario eseguire un controllo aggiuntivo quando si elimina da una tabella di riferimento o si inserisce in una tabella di riferimento.