Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Maneira mais eficiente de fazer um SQL 'INSERT IF NOT EXISTS'


O insert ignore é o melhor método, por várias razões.

Em termos de desempenho, apenas uma consulta está sendo compilada e executada, em vez de duas. Isso economiza a sobrecarga de mover coisas para dentro e para fora do banco de dados.

Em termos de manutenção, ter apenas uma consulta é mais sustentável, porque a lógica está toda em um só lugar. Se você adicionou um where cláusula, por exemplo, seria mais provável que você não a incluísse em duas consultas separadas.

Em termos de precisão, apenas uma consulta deve ter nenhuma (ou pelo menos muito menos) oportunidades para condições de corrida. Se uma linha for inserida entre o select e insert , você ainda receberá um erro.

No entanto, melhor do que insert ignore é insert . . . on duplicate key update . Este último apenas evita o erro por problemas de duplicação. insert ignore pode estar ignorando erros com os quais você realmente se importa.

A propósito, você deve estar verificando se há erros na instrução de qualquer maneira.