sql >> Base de Datos >  >> RDS >> Mysql

La forma más eficiente de hacer un SQL 'INSERTAR SI NO EXISTE'

El insert ignore es el mejor método, por varias razones.

En términos de rendimiento, solo se compila y ejecuta una consulta, en lugar de dos. Esto ahorra la sobrecarga de mover cosas dentro y fuera de la base de datos.

En términos de mantenimiento, solo tener una consulta es más fácil de mantener, porque la lógica está en un solo lugar. Si agregó un where cláusula, por ejemplo, es más probable que no la agregue en dos consultas separadas.

En términos de precisión, solo una consulta no debería tener (o al menos muchas menos) oportunidades para las condiciones de carrera. Si se inserta una fila entre select y insert , seguirá recibiendo un error.

Sin embargo, mejor que insert ignore es insert . . . on duplicate key update . Este último solo evita el error por problemas de duplicación. insert ignore podría estar ignorando errores que realmente le interesan.

Por cierto, deberías estar revisando los errores de la declaración de todos modos.