Mysql
 sql >> Database >  >> RDS >> Mysql

Il modo più efficiente per eseguire un SQL "INSERT IF NOT EXISTS"

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.