Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

A verificação do valor da chave primária antes da inserção é mais rápida do que usar o try-catch?


No SQL 2008, você pode usar apenas MERGE - muito mais simples do que qualquer uma de suas abordagens.

Também não estou com você em "NÃO quero usar transações por motivos de desempenho" - cada comando DML que você executa é parte de alguma transação de qualquer maneira, portanto, há transações mesmo que você não as abra explicitamente. Se você estiver enfrentando problemas de desempenho, poderá postar mais detalhes para obter mais ajuda com o desempenho.

Edit:Se você precisar de inserções muito rápidas, não insira uma linha de cada vez. Adicione conjuntos de linhas e use MERGE - a vantagem que você obterá ao inserir lotes de linhas de cada vez deve superar em muito quaisquer pequenas melhorias que você obterá ao otimizar a velocidade de adição de uma linha.

De qualquer forma, o raciocínio teórico sobre qualquer coisa relacionada a bancos de dados geralmente não é bom o suficiente. Você realmente precisa de benchmark para determinar o que é mais rápido. O que você está chamando de "consulta desnecessária de uma linha existente" pode ser completamente insignificante, e você não sabe se esse é o caso até medi-lo em condições realistas.