sql >> Base de Datos >  >> RDS >> Sqlserver

¿Comprobar el valor de la clave principal antes de insertar es más rápido que usar try-catch?

En SQL 2008, puede usar MERGE, mucho más simple que cualquiera de sus enfoques.

Además, no estoy con usted en "NO quiero usar transacciones por razones de rendimiento":cada comando DML que ejecuta es parte de alguna transacción de todos modos, por lo que hay transacciones incluso si no las abre explícitamente. Si tiene problemas de rendimiento, puede publicar más detalles para obtener más ayuda con el rendimiento.

Editar:si necesita inserciones realmente rápidas, no inserte una fila a la vez. Agregue conjuntos de filas y use COMBINAR:la ventaja que obtendrá al insertar lotes de filas a la vez debería superar con creces cualquier mejora menor que obtenga al optimizar la velocidad de agregar una fila.

De todos modos, el razonamiento teórico sobre cualquier cosa relacionada con las bases de datos no suele ser lo suficientemente bueno. Realmente necesita comparar para determinar qué es más rápido. Lo que está llamando "consultar innecesariamente una línea existente" puede ser completamente insignificante, y no sabe si este es el caso hasta que lo haya medido en condiciones realistas.