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.