L'insert ignore
è il metodo migliore, per diversi motivi.
In termini di prestazioni, viene compilata ed eseguita solo una query, anziché due. Ciò consente di risparmiare il sovraccarico di spostare le cose dentro e fuori dal database.
In termini di manutenzione, avere solo una query è più gestibile, perché la logica è tutta in un unico posto. Se hai aggiunto un where
ad esempio, è più probabile che manchi di aggiungerlo in due query separate.
In termini di accuratezza, solo una query non dovrebbe avere (o almeno molte meno) opportunità per condizioni di gara. Se viene inserita una riga tra select
e insert
, riceverai comunque un errore.
Tuttavia, meglio di insert ignore
è insert . . . on duplicate key update
. Quest'ultimo evita solo l'errore per problemi di duplicazione. insert ignore
potrebbe ignorare gli errori a cui tieni davvero.
A proposito, dovresti comunque verificare la presenza di errori nell'istruzione.