precedenti di utilizzo di MySQL il motore di archiviazione MyISAM per impostazione predefinita, che non supporta i vincoli di chiave esterna. A meno che tu non dichiari esplicitamente le tabelle per utilizzare il motore di archiviazione InnoDB, o cambi il motore di archiviazione predefinito a livello di server, non appaiano chiavi esterne, e non sorprende che gli sviluppatori di software che progettano MySQL non si preoccupino di usare vincoli di chiave esterna.
MySQL 5.5 è attualmente in versione beta e finalmente InnoDB sarà il motore di archiviazione predefinito. Quindi i vincoli delle chiavi esterne saranno supportati immediatamente.
Sì, le chiavi esterne sono consigliate. Questi vincoli aiutano a garantire che i tuoi dati soddisfino sempre l'integrità referenziale. L'alternativa è che il tuo database si riempia gradualmente di "briciole" o righe che fanno riferimento a una riga padre che non è più nel database. Questi possono portare a strani risultati da query e spazio sprecato, query inefficienti e finiscono per eseguire manualmente i lavori di pulizia che non sarebbero necessari se il database impone il rispetto della pulizia.
Re commento forma @Jacob: I punti positivi, ma assicuratevi di leggere recenti articoli confronto InnoDB MyISAM vs Anni fa, MyISAM era considerato il "motore di archiviazione veloce" e InnoDB è stato considerato il motore di archiviazione che si Dovrei usare a malincuore se non potessi fare a meno delle transazioni.
Ma InnoDB è migliorato notevolmente negli ultimi anni e, nella maggior parte dei casi, oggi InnoDB esegue più veloce di rispetto a MyISAM.
Oltre a MyISAM che supporta ancora l'indicizzazione di testo completo, come menzionato, ci sono sempre meno motivi per utilizzare MyISAM. Quando ho bisogno dell'indicizzazione del testo completo, posso mantenere una tabella MyISAM come mirror della mia memoria principale in InnoDB, oppure io uso Apache Solr.
fonte
2010-06-29 02:45:23
grazie, che ha senso – samJL
+1 - assicurati di capire gli svantaggi dell'uso di innoDB su MyISAM. Fai una ricerca su Google per innoDB vs MyISAM, ci sono molti articoli che parlano dei vantaggi e degli svantaggi di entrambi. Quindi dipende davvero da cosa stai usando il DB per sapere se vuoi veramente/avere bisogno dell'integrità referenziale su alcuni dei vantaggi che MyISAM offre. Uno che ho appena scoperto la scorsa settimana è che innoDB non supporta le ricerche full-text (ancora), ma MyISAM fa :( – Jacob
La mia regola empirica quando si parla di InnoDB vs MyISAM è: se hai bisogno di fare ricerca full text , usa MyISAM: la ricerca full text sembra essere l'unica cosa che MyISAM ha un grande vantaggio rispetto a InnoDB in termini di velocità –